在WPF中使用Interaction.Triggers

在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的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易知道(ezd.cc)。

推荐阅读