按钮的统一输入

时间:2012-11-08 18:47:55

标签: wpf input

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

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

  • 的MouseDown
  • 的KeyDown
  • StylusDown
  • TouchDown的
  • PreviewMouseDown
  • PreviewKeyDown
  • PreviewStylusDown
  • 的PreviewTouchDown

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

“预览”事件和常规事件之间有什么区别(在MSDN上找不到它)?

2 个答案:

答案 0 :(得分:2)

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

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

ButtonBase.ClickMode Property

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

ClickMode Enumeration

像雷切尔所说,预览事件发生在实际事件发生之前。

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。

答案 1 :(得分: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)
        {

        }