WPF与Mvvm Light处理鼠标和触摸

时间:2014-06-02 12:46:56

标签: c# wpf mvvm touch

目前我必须开发一个非常简单的WPF用户控件,允许用户在画布上选择几个点。我遇到的困难是,使用触摸屏应该能够触发TouchDown事件,而没有触摸屏的用户应该使用鼠标,从而触发MouseLeftButtonDown事件。有没有一种简单的方法来处理这两种情况而不重复代码?此外,我需要使用Mvvm Light,因此像How to get Touchscreen to use Mouse Events instead of Touch Events in C# app这样的代码隐藏解决方案不会成功。

1 个答案:

答案 0 :(得分:2)

无论您是否使用MVVM,您的链接问题都可以为您提供答案。使用MVVM 意味着您无法处理UI控件事件。它只是意味着你应该写一个Attached Property来为你处理它们。所以,你的答案是肯定的,你可以一起处理这两个事件,其方式与链接页面建议的几乎相同。

唯一的区别是处理程序必须附加到Attached Property中的事件。我不是在这里再次回顾整个故事,而是简单地解释一下这个过程,并请求您从What's the best way to pass event to ViewModel?问题中查看我的答案以获取代码示例。

首先declare your Attached Property及其getter和setter,并确保它附加了PropertyChangedCallback handlerPropertyChangedCallback处理程序是将单个处理程序附加到事件的位置(代码示例只附加单个事件)。这只是意味着它只会在设置Attached Property时将处理程序附加到事件。最后,只需添加单个处理程序即可处理这两个事件。