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>

时间: 2024-10-14 03:53:37

Interaction triggers in WPF的相关文章

2000条你应知的WPF小姿势 基础篇&lt;63-68 Triggers和WPF类逻辑结构&gt;

原文:2000条你应知的WPF小姿势 基础篇<63-68 Triggers和WPF类逻辑结构> 在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000ThingsYou Should Know About C# 和 2,000 Things You Should Know About WPF .他以类似微博式的150字简短语言来每天更新一条WPF和C#重要又容易被遗忘的知识.很希望能够分享给大家. 本系列我不仅会翻译他的每

【WPF】最近在学习wpf 的绑定,,

最近在学习wpf 的绑定,,1.简单的说就是版前端和后端用自己的方法给分开了2.baseVm 模型 baseCmd 命令3.命令传参修改的只是界面里的属性,而不修改其它的值4.前端改变后端, 后端改变前端要用的的函数 PropertyChanged 延伸出来的 OnProperyChanged 再延伸出来的 SetProperty5.前端和后端的分离,Interaction triggers in WPFhttp://www.cnblogs.com/lynn-/p/3262658.html <i

WPF中的动画——(六)演示图板

前面所介绍的都是单一的动画,它只能修改单一属性.有的时候,我们需要将一组动画一起进行,对于一个按钮,我们可能有如下需求: 选择该按钮时,该按钮增大并更改颜色. 单击该按钮时,该按钮缩小并恢复其原始大小. 该按钮变成禁用时,缩小且不透明度缩减到 50%. 每个操作都同时对应进行着两个动画,此时用我们就需要用到TimelineGroup了,前文介绍TimeLine的时候已经介绍过它了,它可以将多个TimeLine封装成一个统一调度.但TimeLine是一个抽象基类,我们通常使用的是它的子类演示图板(

WPF - MVVM - 如何将ComboBox的Selectchange事件binding到ViewModel

将所有的事件,属性,都映射到ViewModel中.好处多多,以后开发尽量用这种模式. 解决方法: 使用System.Windows.Interactivity.dll,添加该dll到项目引用 ? 1 xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" ComboBox映射的代码: <ComboBox VerticalAlignment="Ce

从PRISM开始学WPF(九)交互Interaction?

原文:从PRISM开始学WPF(九)交互Interaction? 0x07交互 这是这个系列的最后一篇了,主要介绍了Prism中为我们提供几种弹窗交互的方式. Notification通知式 Prism通过InteractionRequest 来实现弹窗交互,它是一个泛型接口,不同的类型对应不同类型的弹窗方式. 在使用InteractionRequest的时候需要在,xaml中需要注册一个Trigger: <i:Interaction.Triggers> <prism:Interacti

WPF 实现 DataGrid/ListView 分页控件

在WPF中,通常会选用DataGrid/ListView进行数据展示,如果数据量不多,可以直接一个页面显示出来.如果数据量很大,2000条数据,一次性显示在一个页面中,不仅消耗资源,而且用户体验也很糟糕.这篇博客将介绍如何创建一个分页控件. 为了简单起见,这个分页控件目前只有 首页/上一页/下一页/末页/总页数/第几页 等功能.实现思路,首页/上一页/下一页/末页 这四个通过路由事件来实现,在使用时可以使用命令进行绑定,或者直接使用均可.总页数和第几页通过依赖属性来实现,使用时将页数进行绑定显示

WPF 在事件中绑定命令(可以在模版中绑定命令)

其实这也不属于MVVMLight系列中的东东了,没兴趣的朋友可以跳过这篇文章,本文主要介绍如何在WPF中实现将命令绑定到事件中. 上一篇中我们介绍了MVVMLight中的命令的用法,那么仅仅知道命令是如何构建使用的还不够,很多情况下我们都需要在某个事件触发的时候才去触发命令,所以将命令绑定到事件上是非常有效的做法,下面我们来接着实现将命令绑定到事件中. WPF实现命令绑定到事件 使用 System.Windows.Interactivity.dll 中的 Interaction 可以帮助我们实现

WPF DataGrid自动生成行号

在使用WPF进行应用程序的开发时,经常会为DataGrid生成行号,这里主要介绍一下生成行号的方法.通常有三种方法,这里主要介绍其中的两种,另一种简单提一下. 1. 直接在LoadingRow事件中操作. 这种方式是在code behind文件中操作.即相应的*.xaml.cs文件. 代码如下: this.dataGridSoftware.LoadingRow += new EventHandler<DataGridRowEventArgs>(this.DataGridSoftware_Loa

WPF 实现微信公众号多客服(效果实现篇)

简介: 这是利用WPF作为前端技术,实现桌面版微信多客服系统.项目采用Prism作为前端框架,采用MVVM模式极好的对UI和逻辑代码分离,使用MefBootstrapper集成的MEF IOC容器,解耦各模块对象.合理利用 IEventAggregator 实现事件和交互.文章在介绍对应功能时候会给出相关实现的参考,读者可以参考改进,引入到自己的项目中. 程序运行界面及功能预览: 一.登陆: 功能:支持记住用户和用户设置,可选择记住用户密码. 实现相关: 自定义登陆窗口,引入Microsoft.