WPF将MouseDown和TouchDown结合到同一事件中

时间:2014-01-28 07:35:28

标签: c# wpf touch mouseevent

我正在开发一款将在带触摸屏的笔记本电脑上使用的应用程序。因此,MouseDown事件基本上是在做同样的动作,应该怎么做。

我写的代码是这样的 -

XAML

<Button MouseDown="Button_OnMouseDown" TouchDown="Button_OnTouchDown"/>

C#

private void Button_OnMouseDown(object sender, MouseButtonEventArgs e)
{
    Action();
}
private void Button_OnTouchDown(object sender, TouchEventArgs e)
{
    Action();
}
private void Action()

有更好的方法吗?任何反馈都表示赞赏。

1 个答案:

答案 0 :(得分:12)

使eventArgs更通用。使用EventArgs代替MouseEventArgsTouchEventArgs

private void Button_OnMouseDownOrTouchDown(object sender, EventArgs e)
{
    Action();
}

现在你可以从XAML挂钩到同一个事件:

<Button MouseDown="Button_OnMouseDownOrTouchDown" 
        TouchDown="Button_OnMouseDownOrTouchDown"/>

这称为代表的反差异。详细了解here

  

委托可以与具有类型参数的方法一起使用   是委托签名参数类型的基本类型。同   逆变,您可以使用一个事件处理程序而不是单独的   处理程序。例如,您可以创建一个接受的事件处理程序   EventArgs输入参数并将其与Button.MouseClick事件一起使用   它将MouseEventArgs类型作为参数发送,并且还带有   发送KeyEventArgs参数的TextBox.KeyDown事件。