WPF中的Command事件绑定
2021-04-22 08:29
在项目中使用Command绑定能够使我们的代码更加的符合MVVM模式。不了解的同学可能不清楚,只有继承自ButtonBase类的元素才可以直接绑定Command(Button、CheckBox、RadioButton等)
如果我们要处理Label或者其他的一些控件,那么只能在走事件:
这样的话,我们不得不在窗体类中处理事件代码和部分逻辑,这样就无法得到干净的MVVM模式了,那么我们应该怎么做呢?
Blend为我们提供了解决方案,我们安装Blend以后,便可以获取到System.Windows.Interactivity.dll,添加该dll到项目引用
需要注意Window标签中的
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity",这里相当于后台的using System;之类的加载程序集的功能
这样的我们,我们便可以处理所有目标元素的事件。
同样我们面对另外一个问题,我们是否可以绑定按键事件,并处理特定的键值命令呢?答案是肯定的,使用KeyBinding就可以了,同样还可以使用MouseBinding进行鼠标事件的处理。
这里我们针对TextBox和Label进行了InputBindings的绑定。
需要注意的是:
1.InputBindings是个绑定集合InputBindingCollection,可以有多个MouseBinding和多个KeyBinding
2.KeyBinding绑定对象需要可聚焦,这里的Label由于无法聚焦,所以无法响应Alt+S事件
3.MouseBinding中Gesture的优先级高于MouseAction,当Gesture设置以后,LeftClick将失效