Interaction triggers in WPF
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相关推荐
- 【wpf】<i:Interaction.Triggers> 相关报错
下载git的上的一个程序,编译的时候报错,<i:Interaction.Triggers> 这个个标签用不了.这个貌似是早期用MVVM时的一种写法,看工程引用的话,发现有个包找不到了: S ...
- WPF中的动画——(六)演示图板
前面所介绍的都是单一的动画,它只能修改单一属性.有的时候,我们需要将一组动画一起进行,对于一个按钮,我们可能有如下需求: 选择该按钮时,该按钮增大并更改颜色. 单击该按钮时,该按钮缩小并恢复其原始大小 ...
- 从PRISM开始学WPF(九)交互Interaction?
原文:从PRISM开始学WPF(九)交互Interaction? 0x07交互 这是这个系列的最后一篇了,主要介绍了Prism中为我们提供几种弹窗交互的方式. Notification通知式 Pris ...
- 【WPF】MVVM模式的3种command
原文:[WPF]MVVM模式的3种command 1.DelegateCommand 2.RelayCommand 3.AttachbehaviorCommand 因为MVVM模式适合于WPF和SL, ...
- (WPF, MVVM) Event 处理
原文:(WPF, MVVM) Event 处理 WPF的有些UI元素有Command属性可以直接实现绑定,如Button 但是很多Event的触发如何绑定到ViewModel中的Command呢? 答 ...
- WPF 实现 DataGrid/ListView 分页控件
原文:WPF 实现 DataGrid/ListView 分页控件 在WPF中,通常会选用DataGrid/ListView进行数据展示,如果数据量不多,可以直接一个页面显示出来.如果数据量很大,200 ...
- C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧
01 - 关于Conventions Caliburn.Micro的一个主要特性是,它能够通过一系列约定消除对锅炉铭牌代码的需求.有些人喜欢习俗,有些人讨厌习俗.这就是为什么CM的约定是完全可定制的, ...
- C# WPF MVVM模式Prism框架从零搭建(经典)
01 - 前言 目前最新的PRISM的版本是8.1.97,本节以6.3.0.0 讲解,可以在Github上获取PRISM的源码. Prism Github地址:https://github.com/P ...
- 我想快速给WPF程序添加托盘菜单
我想... 1 简单要求: 使用开源控件库 在XAML中声明托盘菜单,就像给控件添加ContextMenu一样 封装了常用命令,比如:打开主窗体.退出应用程序等 TerminalMACS 我在Term ...
最新文章
- 页面 table 可编辑的实现
- 虚拟光驱安装服务器无法运行,windows7虚拟光驱无法正常打开怎么办
- 智慧航空AI大赛-阿里云算法大赛总结 第一赛季总结
- 苹果 Mac 电脑将采用自研芯片、App Store 上线“小程序”,WWDC20 为开发者带来了什么 ?
- 分享我的Linux开发环境
- 编程语言-初学者常见的几个问题
- Linux 使用 ffmpeg 开发
- 免费手机WAP网站大全
- word表格边框消失怎么办_为什么我的word表格没了边框 - 卡饭网
- 王者荣耀android换ios,王者荣耀安卓转ios教程攻略
- 【聚沙成塔】-MYSQL全文索引使用MATCH AGAINST
- 面试算法高频压轴题——灯泡开关问题
- 【高自旋和低自旋配合物】
- 【工程应用】用Redis存储特征
- stc 串口收发 c语言,STC12C5A60S2 串口中断接收程序
- JAVA实现链接生成二维码
- 约瑟夫问题C语言实现——N个人排成一队循环报数,报M的倍数的出列,最后剩下的的是原来队列的第几位
- javaweb总——注:跟着狂神学的
- 《新概念》英语的学习方法(完整版)
- 超越IDM、Xdown的全能文件下载器
热门文章
- Jolla 宣布 Sailfish 系统浏览器开源
- 每日一题 --- P1093 [NOIP2007 普及组] 奖学金[洛谷][JAVA]
- 【行研资料】智能家居的未来(英文)——附下载
- linux控制主机风扇转速,开发环境 - Linux下设置机箱上的风扇转速
- shp转osm格式——道路文件格式转换
- 微信小程序和百度小程序的登录 wx.login() swan.login() , 以及存在的问题处理
- htc+820+android+5.0,htc 820s和htc one m8哪个好?两者有什么区别?
- python中texttable库显示实时数据_用Python串口实时显示数据并绘图pyqtgraph
- ecw2c理解元数据:使用BigQuery k-means将4,000个堆栈溢出标签聚类
- c语言入门经典doc,C语言入门经典C语言编程.ppt