WPF 绑定Command

Posted kybs0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 绑定Command相关的知识,希望对你有一定的参考价值。

WPF中,我们使用MVVM,在ViewModel中定义Command和其业务逻辑,界面绑定Command。

那么是不是所有的事件都可以定义Command呢,然后将业务全部放在ViewModel中呢?

界面CommandBindings

如果只是交互的处理,可以直接定义RoutedCommand即可

1. 定义Command

1 <RoutedCommand x:Key="SelectAllCommand"/> 

2. 添加命令委托处理

1 <UserControl.CommandBindings>
2     <CommandBinding Command="{StaticResource  SelectAllCommand}" Executed="SelectAllExecuted"/>
3 </UserControl.CommandBindings>

3. 绑定Command

1 <CheckBox Name="AllSelectCheckBox" Command="{StaticResource SelectAllCommand}" />

 

InvokeCommandAction

控件不只有Button,还有其它很多TextBox/ListBox等控件甚至自定义控件的KeyDown/MouseUp/LostFocus等事件以及自定义的事件。

我们都知道Buttton有Command属性(对应Click事件),直接绑定相应的Command就可以了,那么除Button.Click事件之外的事件怎么绑定?

CommandAction是Trigger与Command的中间转换器

通过InvokeCommandAction 的使用,WPF任意事件都可以绑定Command,将业务逻辑放在ViewModel中。如:

1 <TextBlock>
2     <i:Interaction.Triggers>
3         <i:EventTrigger EventName="MouseLeftButtonDown">
4             <i:InvokeCommandAction Command="{Binding MouseLeftButtonDownCommand}"/>
5         </i:EventTrigger>
6     </i:Interaction.Triggers>
7 </TextBlock>

 快捷键绑定

通过Key值,绑定ViewModel中相应命令

1 <UserControl.InputBindings>
2     <KeyBinding Key="Delete" Command="{Binding MenuDeleteCommand}" />
3 </UserControl.InputBindings>

 

以上是关于WPF 绑定Command的主要内容,如果未能解决你的问题,请参考以下文章

WPF 绑定Command

WPF MVVM DataGrid Button Command绑定

WPF 菜单事件绑定 DataTemplate下button Command事件绑定 DataTemplate遍历实体数据

WPF MvvmLight RelayCommand 绑定Command 的使用

WPF ContextMenu 在MVVM模式中绑定 Command及使用CommandParameter传参

WPF命令(Command)介绍命令和数据绑定集成应用