[MVVM]04-MVVMLight不支持命令的控件把事件转换成命令
2017-11-25 22:55
246 查看
MVVMLight不支持命令的控件把事件转换成命令
场景
checkbox不支持命令,但是要在选中在时候在ViewModel中进行相应的操作,那么要怎么实现呢操作
我们可以把事件转化为命令引用System.Windows.Interactivity 在blend中带的有,vs2017引入mvvmlight会自动添加
在xaml引入System.Windows.Interactivity。
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
在控件中可以这样使用
<CheckBox Width="30" Height="30" Margin="86,65,401,65"> <i:Interaction.Triggers> <i:EventTrigger EventName="Checked"> <command:EventToCommand Command="{Binding CheckedCommand}"></command:EventToCommand> </i:EventTrigger> <i:EventTrigger EventName="Unchecked"> <command:EventToCommand Command="{Binding UnCheckedCommand}"></command:EventToCommand> </i:EventTrigger> </i:Interaction.Triggers> </CheckBox>
在ViewlModel添加对应的事件处理弹框
CheckedCommand = new RelayCommand(Checked); UnCheckedCommand = new RelayCommand(UnChecked); public RelayCommand CheckedCommand { get; set; } public RelayCommand UnCheckedCommand { get; set; } private void Checked() { MessageBox.Show("Checked"); } private void UnChecked() { MessageBox.Show("Unchecked"); }
提示
命令可以很好的添加快捷键的后面的文会讲到。WPF内部在的优化特别是最新的一版更新中有明显的改进如果不到万不得一的情况下一定遵守MVVM的规则,代码实现功能那里都可以写,乱写一方便是不方便维护,另一方便执行的效率,你不懂后台的执行,可怕的就是乱写。用了最近的性能拿到了结果。
源码
我有时候会被别人说这个可以用什么什么可以很方便的实现,我当然知道,一个独立的功能实现难,但一般不是世界难题都可以解决,但是放在现有的系统中,如何是对现有系统最小更改和影响的情况下实现呢。为了一个功能更改太量的现有功能,那种方法我不认为是最优秀的。理解细节和整体把握就是最大的底气。我是码农,但我爱惜我自己的土地。
相关文章推荐
- MVVM - 事件转命令2
- 动态创建控件支持事件响应并可保存与读取
- 支持导出PDF文件并转换成图片格式的PDF查看控件Spire.PDFViewer
- MVVM 事件转命令1
- 动态创建控件支持事件响应并可保存与读取
- 使用AJAX控件来实现Ajax操作(支持服务器事件)
- MVVM模式下 所有控件共享同一事件 以TextBox只能输入数字键和回车键为例子
- MVVM开发模式MVVM Light Toolkit中使用事件和参数传递
- 动态创建控件支持事件响应并可保存与读取
- 使用AJAX控件来实现Ajax操作(支持服务器事件)
- ios 超出父控件区域支持点击事件
- 支持Word文档和其他文件格式间的转换的控件Spire.Doc for .NET
- 使用 MVVMLight 命令绑定
- 利刃 MVVMLight 6:命令基础
- WPF中MVVM模式下控件自有的事件绑定
- MVVM-Light模式,在dataGrid的模板下,绑定事件不触发的原因已经服务端排序的实现
- 支持循环事件的日历日程控件MindFusion.Scheduling for Silverlight
- 动态创建控件支持事件响应
- MVVM开发模式MVVM Light Toolkit中使用事件和参数传递
- WPF中对鼠标事件转换为命令处理模式的鼠标位置参数传递及EventArgs传递