我的XAML是:
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Image Source="X.png" HorizontalAlignment="Left"
Width="20" Height="20"
MouseLeftButtonDown="Image_MouseLeftButtonDown"/>
</ControlTemplate>
</Setter.Value>
</Setter>现在我正在关注MVVM。我需要更改代码以使其与ViewModel一起工作。如何使用ViewModel处理MouseLeftButtonDown事件?
发布于 2013-01-02 16:32:21
使用MVVM时:视图中的触发器(可以是MouseLeftDown、MouseHover等)在ViewModel中触发。
这些命令在ViewModel中执行一些操作,如果此命令更改了视图中绑定的任何数据,您可以在视图中看到结果。
因此,不要问“如何使用视图模型处理MouseLeftButtonDown事件”,而要决定您希望在ViewModel中做什么(例如从列表框中删除项、导航到另一个视图、刷新数据等)。并为其创建特定的命令。
MouseLeftDown可以触发该命令...但到底做了什么不应该是视图的一部分...
捕捉鼠标事件并运行命令的Here is an example,使用MVVM和only XAML。
发布于 2013-01-02 16:31:56
在我看来,鼠标左键不应该由"MVVM“处理(由绑定处理)。它与模型没有任何关系,因为它被重新设计为UI体验。
为此,我会附加到我的代码后台中的“老式”MouseRightButtonDown事件,然后在视图中激发命令或方法。因为模型不需要知道命令是如何执行的。按钮点击、鼠标手势和菜单都与UI相关。
至少在我看来:-)
https://stackoverflow.com/questions/14117377
复制相似问题