这篇文章介绍了在WPF中使用Interaction.Triggers的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
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>
到此这篇关于在WPF中使用Interaction.Triggers的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持得得之家。
本文标题为:在WPF中使用Interaction.Triggers
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
- Unity3D实现渐变颜色效果 2023-01-16
- 在C# 8中如何使用默认接口方法详解 2023-03-29
- Unity Shader实现模糊效果 2023-04-27
- user32.dll 函数说明小结 2022-12-26
- 如何使用C# 捕获进程输出 2023-03-10
- Oracle中for循环的使用方法 2023-07-04
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- c# 模拟线性回归的示例 2023-03-14
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- .NET CORE DI 依赖注入 2023-09-27