Wpf 在MVVM中处理MouseLeftButtonDown
我的XAML是:Wpf 在MVVM中处理MouseLeftButtonDown,wpf,xaml,mvvm,mouseevent,controltemplate,Wpf,Xaml,Mvvm,Mouseevent,Controltemplate,我的XAML是: <Setter Property="Template"> <Setter.Value> <ControlTemplate> <Image Source="X.png" HorizontalAlignment="Left" Width="20" Height="20"
<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
事件?在我看来,鼠标左键不应由“MVVM”处理(由绑定处理)。
它与模型无关,因为它与UI体验相关
为此,我将附加到codebehind中的“老式”MouseRightButtonDown事件,然后在视图中启动命令或方法。
因为模型不需要知道命令是如何执行的。按钮点击、鼠标手势和菜单与用户界面相关
至少在我看来:-)使用MVVM时:视图中的触发器(可以是鼠标悬停、鼠标悬停等)会触发ViewModel中的。
这些命令在ViewModel中执行某些操作,如果此命令更改视图中绑定的任何数据,则可以在视图中看到结果 因此,不要问“如何使用视图模型处理MouseLeftButtonDown事件”,而是要决定在ViewModel中要做什么(例如从列表框中删除项目、导航到另一个视图、刷新数据等),并为其创建特定命令 鼠标悬停可以触发该命令。。。但到底做了什么不应该成为观点的一部分
捕捉鼠标事件并运行命令,只使用MVVM和XAML。无需做什么,左键单击需要代码支持。阅读[WPF和MVVM.Binding事件][1][1]: