zoukankan      html  css  js  c++  java
  • WPF中MVVM模式下控件自有的事件绑定

    1、原因

    在WPF中单纯的命令绑定往往不能满足覆盖所有的事件,例如ComboBox的SelectionChanged事件,DataGrid的SelectionChanged事件等等,这时就可以用事件绑定来完成。

    2、示例

    事件绑定需要用到:System.Windows. interactivity.dll 库,如果安装了Blend for visual studio,里面就包含了这个dll,在Interaction.Triggers里面添加一个或多个EventTrigger并指定关注的的事件名称,在EventTrigger中通过InvokeCommandAction来绑定事件对应的命令。

    代码如下:

    <ComboBox Grid.Column="3" Width="90"  
                          SelectedItem="{Binding SelectConfirmStatus, Mode=TwoWay}" ItemsSource="{Binding ConfirmStatus, Mode=OneWay}" SelectedValuePath="ID" 
                          DisplayMemberPath="StatusName" Height="40"  Foreground="Black"
    HorizontalContentAlignment="Left" VerticalContentAlignment="Center"
                          HorizontalAlignment="Right" VerticalAlignment="Center" >
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="SelectionChanged">
                            <i:InvokeCommandAction Command="{Binding ConfirmStatusCommand}">
    </i:InvokeCommandAction>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </ComboBox>
    View Code

    同时需要引入命名空间,如下:

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    View Code

    然后再ViewModel中实现该命令即可,如:

     public RelayCommand<object> ConfirmStatusCommand { private set; get; }

    在类的构造函数中实现该命令属性:

                ConfirmStatusCommand = new RelayCommand<object>(args =>
                {
                    CheckAllotOrders();//此为命令执行的方法
                });
    View Code

    整体就这样,供参考,但此方法也有局限,就是不能把动态的命令参数(如键盘按键事件,获取按的键值参数)传入ViewModel,如需传参数,还得实现一个参数类。

  • 相关阅读:
    BZOJ1406: [AHOI2007]密码箱 数论
    BZOJ5188: [Usaco2018 Jan]MooTube 并查集+离线处理
    BZOJ2662: [BeiJing wc2012]冻结 spfa+分层图
    BZOJ1297: [SCOI2009]迷路 矩阵快速幂
    BZOJ4887: [Tjoi2017]可乐 矩阵快速幂
    BZOJ5168: [HAOI2014]贴海报 线段树
    开发富文本编辑器的一些经验教训
    数据可视化的发展前景、商业/职业前景?
    市场调研中如何做数据分析?
    当前火热的短视频,背后有着哪些黑科技技术?
  • 原文地址:https://www.cnblogs.com/xiesong/p/7205759.html
Copyright © 2011-2022 走看看