zoukankan      html  css  js  c++  java
  • Interaction triggers in WPF

     

    Interaction Class - static class that owns the Triggers and Behaviors attached properties. Handles propagation of AssociatedObject change notifications (MSDN).

    当不足以使用ICommand的时候,这种特殊的手段对MVVM模式非常有用。

    我们需要在我们的项目中添加两个引用:

    - Microsoft.Expression.Interactions.dll
    - System.Windows.Interactivity.dll

    代码例子:
     1)引用Microsoft.Expression.Interactions.dll和System.Windows.Interactivity.dll

      在UserControl添加两个特性

    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
    xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
    <!--或者-->
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
    xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"

     2) 在ViewModel中创建public方法

    public void SubmitClicked()
            {
                MessageBox.Show("Button was clicked");
            }

     3) 在UserControl中添加button到Xaml

    复制代码
    <Button Content="Submit Method"  Width="180">
         <i:Interaction.Triggers>
             <i:EventTrigger EventName="Click">
                   <ei:CallMethodAction TargetObject="{Binding}" MethodName="SubmitClicked"/>
             </i:EventTrigger>
          </i:Interaction.Triggers>
    </Button>
    复制代码

    如果我们想在这个方法中使用参数,我们应该在ViewModel中使用属性(例如双向绑定)。

    附录:使用ICommand的例子。

    复制代码
    //区别:这样可以传参数,但是绑定的是实现了ICommand接口的类的对象。
    
    //步骤1:引用System.Windows.Interactivity.dll,添加特性。
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
    //步骤2:使用。 
    <i:Interaction.Triggers>
      <i:EventTrigger EventName="Loaded">
        <i:InvokeCommandAction Command="{Binding ClockWindowLoadCommand}" CommandParameter="{Binding ElementName=txtCardNo}"/>
      </i:EventTrigger>
      <i:EventTrigger EventName="KeyUp">
        <i:InvokeCommandAction Command="{Binding WindowKeyCommand}"/>
      </i:EventTrigger>
      <i:EventTrigger EventName="Activated">
        <i:InvokeCommandAction Command="{Binding WindowActivatedCommand}" CommandParameter="{Binding ElementName=txtCardNo}"/>
      </i:EventTrigger>
    </i:Interaction.Triggers>
    复制代码
  • 相关阅读:
    阿里云上的Centos 7.6的一次Nginx+Mysql+PHP7.3 部署
    Spring系列-SpringBoot 学习路径
    想做公众号,总要写点什么--第008期博文
    我关注的那些公众号-第007期博文
    Ruby on Rails,一对多关联(One-to-Many)
    ruby新建web项目步骤,使用mysql数据库
    ruby select 方法,可用于先查询结果后,再次用条件限制
    cron和crontab命令详解 crontab 每分钟、每小时、每天、每周、每月、每年定时执行 crontab每5分钟执行一次
    nginx做rails项目web服务器缓存配置方法
    ruby----%使用法
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/5643766.html
Copyright © 2011-2022 走看看