zoukankan      html  css  js  c++  java
  • 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中。如:

    自定义Command,请参考https://www.cnblogs.com/kybs0/p/7523654.html

    案例:下载 System.Windows.Interactivity.dll,引用后就可以直接使用如下的Interaction了。

    1     <Button x:Name="SearchingButton">
    2         <i:Interaction.Triggers>
    3             <i:EventTrigger EventName="MouseDown">
    4                 <i:InvokeCommandAction Command="{Binding SearchCommand}" 
    5                                         CommandParameter="{Binding ElementName=SearchingTextBox,Path=Text}"/>
    6             </i:EventTrigger>
    7         </i:Interaction.Triggers>
    8     </Button>

     快捷键绑定

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

    1 <UserControl.InputBindings>
    2     <KeyBinding Key="Delete" Command="{Binding MenuDeleteCommand}" />
    3 </UserControl.InputBindings>
  • 相关阅读:
    linux一些配置
    tomcat启动后,页面无法访问
    利用jmeter实现多IP压测
    java操作数据库
    excle中表头分割单元格
    常用的最大流算法 Dinic 和 最小费用最大流SPFA写法
    [kuangbin]带你飞之'网络流'专题
    (留坑以后再看)一般图'最大匹配' 带花树 算法
    二分图'多重匹配'
    二分图'最大匹配' HK 算法
  • 原文地址:https://www.cnblogs.com/kybs0/p/9111327.html
Copyright © 2011-2022 走看看