msf*_*boy 5 wpf mouse events command mvvm
我发现实际上有两种方法可以使用mvvm模式处理控件上的鼠标事件.
两种方式实际上都是1种方式:
MVVM Light Toolkit http://mvvmlight.codeplex.com/
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand
Command="{Binding SelectionChangedCommand}"
CommandParameter="{Binding SelectedItems,
ElementName=MyDataGrid}" />
</i:EventTrigger>
</i:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)
和Blend interactivity.dll与行为
<i:Interaction.Triggers>
<i:EventTrigger EventName=”MouseLeftButtonDown”>
<Behaviours:ExecuteCommandAction Command=”{Binding MyCommand}” CommandParameter=”{Binding MyCommandParameter}”/>
</i:EventTrigger>
</i:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)
你知道更好的方法吗?
主持人:为什么我的最后6个xaml代码行根本不可见?它们被IE和Iron浏览器吞噬.您能否报告管理员修复该代码脚本?它经常不起作用.证明:http://img251.imageshack.us/img251/5236/errorxt.png
如果你需要在任意位置处理MouseDown,这些都是很好的方法.
然而,这些情况通常很少而且很远.通常有一种更简单的方法:
还有许多其他例子.实际上,很少发现MouseDown映射到Command的情况,并且没有更简洁的方法来执行相同的操作.
总有另一种选择.您可以在View的代码隐藏中处理WPF事件,并在ViewModel上调用适当的方法.MVVM模式不禁止在View的代码隐藏文件中编写任何代码.
WPF应用程序框架(WAF)的ViewModel示例应用程序显示了它的工作原理.