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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2014-07-05 QTableWidget控件总结