c# - 要命令的 XAML Setter 属性

标签 c# xaml

我试图在鼠标悬停在切换按钮上时调用命令。

我有以下代码。

<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Cursor" Value="Hand"></Setter>
<Setter Property="Command" Value="{Binding Path=PushPinMouse}" />
</Trigger>

当我将鼠标滚动到上方时,手就会显示出来。但是,当我将鼠标滚动到它上面时,它并没有点击我的 PushPinMouse 方法。这是为什么?

最佳答案

这里你需要的是附加行为。我可以推荐你看这篇不错的文章: http://blogs.microsoft.co.il/blogs/tomershamam/archive/2009/04/14/wpf-commands-everywhere.aspx

您的代码看起来像(带有附加命令库):

<Style>
  <Setter Property="ts:CommandSource.Trigger">
    <Setter.Value>
      <ts:PropertyCommandTrigger Property="IsMouseOver" Value="true" Command="{Binding Path=PushPinMouse}"/>
    </Setter.Value>
  </Setter>
</Style>

这表示:“当鼠标结束时,执行 PushPinMouse 命令”。如果这不是您需要的行为,也许您可​​以修改此代码;) 就像其他人所说的那样,按钮命令仅在单击时执行,但是这个库可以将命令添加到其他事件(而路由事件或属性更改事件)。

你仍然需要这个触发器:

<Trigger Property="IsMouseOver" Value="True">
  <Setter Property="Cursor" Value="Hand"></Setter>
</Trigger>

关于c# - 要命令的 XAML Setter 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1429167/

相关文章:

c# - 如何在 XAML 中指定 DataGrid 的 ItemsSource 类型?

c# - 解决 DataGrid 列宽调整不一致的问题

c# - 测试依赖于企业库的代码,即使它不提供接口(interface)?

c# - LSP : conditional creation of objects

c# - Clickonce 不包括用于部署的 NuGet System.Runtime DLL,因为 GAC 中存在不同的版本

c# - 如何将 WPF 窗口分成两部分?

c# - 公开在另一个自定义控件的控件模板中定义的自定义控件事件

c# - 将多个 ComboBoxes 绑定(bind)到同一个 ItemsSource 会导致问题

c# - 良好的 Lucene .NET 替代 ASP.NET 网站

c# - 如何在 GridView 上添加静态项目?