我正在WPF应用程序中实现一个简单的拖放功能。我希望该应用程序能够在没有触摸支持的桌面和只有触摸支持的平板电脑上运行。
目前我有一个MouseMove和TouchMove处理程序,它们都实现了相同的逻辑(启动DoDragDrop())。
如何将触摸输入路由到鼠标处理程序或反之,以减少重复代码?进一步地,如何将简单的轻触路由到点击事件?
我正在WPF应用程序中实现一个简单的拖放功能。我希望该应用程序能够在没有触摸支持的桌面和只有触摸支持的平板电脑上运行。
目前我有一个MouseMove和TouchMove处理程序,它们都实现了相同的逻辑(启动DoDragDrop())。
如何将触摸输入路由到鼠标处理程序或反之,以减少重复代码?进一步地,如何将简单的轻触路由到点击事件?
TouchEventArgs
和 MouseButtonEventArgs
派生自 InputEventArgs
,因此您的全局处理程序将只实现 InputEventArgs
。 /// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
//private void Button_TouchMove(object sender, TouchEventArgs e)
//{
// TouchEventArgs derives from InputEventArgs
//}
// private void Button_MouseMove(object sender, MouseButtonEventArgs e)
//{
// MouseButtonEventArgs derives from InputEventArgs
//}
private void GlobalHandler(object sender, InputEventArgs e)
{
// This will fire for both TouchEventArgs and MouseButtonEventArgs
// If you need specific information from the event args you can just cast.
// e.g. var args = e as MouseButtonEventArgs;
}
}
Xaml:
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid >
<Button MouseMove="GlobalHandler" TouchMove="GlobalHandler"/>
</Grid>
</Window>