1

我是 WPF 的新手,我只是想在按下按钮时运行一些代码(使用任何类型的输入设备)。

然而,当我查看 Button 事件时,我看到了很多匹配的事件:

  • 鼠标按下
  • 按键
  • 触控笔向下
  • 接地
  • 预览鼠标按下
  • PreviewKeyDown
  • 预览StylusDown
  • PreviewTouchDown

我认为 Click 不适合我,因为我需要知道按钮何时释放。那么,我是否必须为每个事件编写一个事件处理程序,或者是否有一种简单的方法来包含所有输入类型?

此外,“预览”事件和常规事件有什么区别(在 MSDN 上找不到)?

4

2 回答 2

2

我希望您确实想要 Click 事件。

请注意,WPF 按钮有一个 ClickMode 属性,用于控制何时引发 Click 事件。

ButtonBase.ClickMode 属性

ClickMode 属性的默认值是 ReleaseSpecifies that the Click event should be raised when a button is pressed and released.

ClickMode 枚举

就像 Rachel 所说,预览事件发生在实际事件发生之前。

Click 事件将不起作用,因为您希望在按下和释放按钮时都发生事件。您也许可以绑定到IsPressed属性。

<Style x:Key="Triggers" TargetType="Button">
  <Style.Triggers>
    <Trigger Property="IsPressed" Value="true">
      <Setter Property = "Foreground" Value="Green"/>
    </Trigger>
  </Style.Triggers>
</Style>

如果您需要引发事件,您可以在触发器中使用EventSetter而不是 Setter。

于 2012-11-08T19:04:15.910 回答
0

您可以对所有事件使用一个事件处理程序,这有帮助吗?

   <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="86,84,0,0" Name="button1" VerticalAlignment="Top" Width="75" 
                        MouseDown="button1_generalInput"
                        KeyDown="button1_generalInput"
                        StylusDown="button1_generalInput"
                        TouchDown="button1_generalInput"/>

private void button1_generalInput(object sender, EventArgs e)
        {

        }
于 2012-11-08T19:14:47.583 回答