Interaction triggers in WPF
Posted Avatarx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章
未左键单击 Interaction.Triggers 按钮时 WPF 应用程序崩溃
WPF MVVM ComboBox(in DataGrid)触发事件SelectionChanged, 通知到ViewModel.
[Ionic2] Device Interaction in an Ionic App with Cordova Plugins
论文阅读 Forecasting Human-Object Interaction: Joint Prediction of Motor Attention and Actions in First
论文阅读 Forecasting Human-Object Interaction: Joint Prediction of Motor Attention and Actions in First