XAML Setter属性命令

时间:2009-09-15 19:27:20

标签: c# xaml

当我的鼠标位于切换按钮上时,我正在尝试调用命令。

我有以下代码。

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

当我滚动鼠标时,手显示。但是,当我将鼠标滑过它时,它没有按下我的PushPinMouse方法。为什么会这样?

4 个答案:

答案 0 :(得分:1)

这里你需要的是附加行为。我可以建议你看看这篇好文章: 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>

答案 1 :(得分:0)

点击时,命令由ToggleButton等控件执行。我不了解您的场景,但可能您可以在您的setter中设置IsChecked属性,并将属性绑定到IsChecked。希望它有所帮助。

答案 2 :(得分:0)

您正在更改按钮将触发的命令,但在您单击它之前它实际上并不执行该按钮。因此,在这种情况下,您必须将鼠标悬停在上,然后单击才能执行该命令。

我还假设您已使用CommandBinding将命令绑定到命令函数?

答案 3 :(得分:-1)

命令未绑定,您需要分配命令 使用Command = PushPinMouse