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>

Interaction triggers in WPF相关推荐

  1. 【wpf】<i:Interaction.Triggers> 相关报错

    下载git的上的一个程序,编译的时候报错,<i:Interaction.Triggers> 这个个标签用不了.这个貌似是早期用MVVM时的一种写法,看工程引用的话,发现有个包找不到了: S ...

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

    前面所介绍的都是单一的动画,它只能修改单一属性.有的时候,我们需要将一组动画一起进行,对于一个按钮,我们可能有如下需求: 选择该按钮时,该按钮增大并更改颜色. 单击该按钮时,该按钮缩小并恢复其原始大小 ...

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

    原文:从PRISM开始学WPF(九)交互Interaction? 0x07交互 这是这个系列的最后一篇了,主要介绍了Prism中为我们提供几种弹窗交互的方式. Notification通知式 Pris ...

  4. 【WPF】MVVM模式的3种command

    原文:[WPF]MVVM模式的3种command 1.DelegateCommand 2.RelayCommand 3.AttachbehaviorCommand 因为MVVM模式适合于WPF和SL, ...

  5. (WPF, MVVM) Event 处理

    原文:(WPF, MVVM) Event 处理 WPF的有些UI元素有Command属性可以直接实现绑定,如Button 但是很多Event的触发如何绑定到ViewModel中的Command呢? 答 ...

  6. WPF 实现 DataGrid/ListView 分页控件

    原文:WPF 实现 DataGrid/ListView 分页控件 在WPF中,通常会选用DataGrid/ListView进行数据展示,如果数据量不多,可以直接一个页面显示出来.如果数据量很大,200 ...

  7. C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧

    01 - 关于Conventions Caliburn.Micro的一个主要特性是,它能够通过一系列约定消除对锅炉铭牌代码的需求.有些人喜欢习俗,有些人讨厌习俗.这就是为什么CM的约定是完全可定制的, ...

  8. C# WPF MVVM模式Prism框架从零搭建(经典)

    01 - 前言 目前最新的PRISM的版本是8.1.97,本节以6.3.0.0 讲解,可以在Github上获取PRISM的源码. Prism Github地址:https://github.com/P ...

  9. 我想快速给WPF程序添加托盘菜单

    我想... 1 简单要求: 使用开源控件库 在XAML中声明托盘菜单,就像给控件添加ContextMenu一样 封装了常用命令,比如:打开主窗体.退出应用程序等 TerminalMACS 我在Term ...

最新文章

  1. 页面 table 可编辑的实现
  2. 虚拟光驱安装服务器无法运行,windows7虚拟光驱无法正常打开怎么办
  3. 智慧航空AI大赛-阿里云算法大赛总结 第一赛季总结
  4. 苹果 Mac 电脑将采用自研芯片、App Store 上线“小程序”,WWDC20 为开发者带来了什么 ?
  5. 分享我的Linux开发环境
  6. 编程语言-初学者常见的几个问题
  7. Linux 使用 ffmpeg 开发
  8. 免费手机WAP网站大全
  9. word表格边框消失怎么办_为什么我的word表格没了边框 - 卡饭网
  10. 王者荣耀android换ios,王者荣耀安卓转ios教程攻略
  11. 【聚沙成塔】-MYSQL全文索引使用MATCH AGAINST
  12. 面试算法高频压轴题——灯泡开关问题
  13. 【高自旋和低自旋配合物】
  14. 【工程应用】用Redis存储特征
  15. stc 串口收发 c语言,STC12C5A60S2 串口中断接收程序
  16. JAVA实现链接生成二维码
  17. 约瑟夫问题C语言实现——N个人排成一队循环报数,报M的倍数的出列,最后剩下的的是原来队列的第几位
  18. javaweb总——注:跟着狂神学的
  19. 《新概念》英语的学习方法(完整版)
  20. 超越IDM、Xdown的全能文件下载器

热门文章

  1. Jolla 宣布 Sailfish 系统浏览器开源
  2. 每日一题 --- P1093 [NOIP2007 普及组] 奖学金[洛谷][JAVA]
  3. 【行研资料】智能家居的未来(英文)——附下载
  4. linux控制主机风扇转速,开发环境 - Linux下设置机箱上的风扇转速
  5. shp转osm格式——道路文件格式转换
  6. 微信小程序和百度小程序的登录 wx.login() swan.login() , 以及存在的问题处理
  7. htc+820+android+5.0,htc 820s和htc one m8哪个好?两者有什么区别?
  8. python中texttable库显示实时数据_用Python串口实时显示数据并绘图pyqtgraph
  9. ecw2c理解元数据:使用BigQuery k-means将4,000个堆栈溢出标签聚类
  10. c语言入门经典doc,C语言入门经典C语言编程.ppt