如何利用WPF的Interaction.Triggers实现长尾词的动态交互效果?
- 内容介绍
- 文章标签
- 相关推荐
本文共计667个文字,预计阅读时间需要3分钟。
%E2%80%9C%E4%BA%A4%E4%BA%92%E7%B1%BB%E2%80%93%E9%9D%99%E6%80%81%E7%B1%BB%2C%E6%8B%A5%E6%9C%89%E4%BC%AA%E5%88%9B%E5%AF%B9%E8%B1%A1%E7%9A%84%E4%BC%AA%E5%88%9B%E5%B1%9E%E6%80%A7%E5%92%8C%E8%A1%8C%E4%B8%BA%E5%AF%B9%E8%B1%A1%2C%E5%8F%91%E5%B1%95%E5%85%B1%E5%90%8C%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%8F%98%E5%8C%96%E9%80%9A%E6%8A%A5%2C%E5%8F%AF%E8%83%BD%E6%98%AFMSDN%E4%B8%AD%E7%9A%84%E6%8F%90%E7%A4%BA%2E%E5%BD%93%E4%BD%BF%E7%94%A8ICommand%E6%97%B6%E4%B8%8D%E8%B6%B3%E7%9A%84%E6%97%B6%E5%80%99%2C%E8%BF%99%E7%A7%8D%E7%89%B9%E6%AE%8A%E7%9A%84%E6%89%8B%E6%AE%B5%E5%AF%B9%E4%BA%8EMVVM%E6%A8%A1%E5%BC%8F%E9%9D%9E%E5%B8%B8%E6%9C%89%E5%BA%94%E7%94%A8%E2%80%9D
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="schemas.microsoft.com/expression/2010/interactions" <!--或者--> xmlns:i="schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="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="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的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。
本文共计667个文字,预计阅读时间需要3分钟。
%E2%80%9C%E4%BA%A4%E4%BA%92%E7%B1%BB%E2%80%93%E9%9D%99%E6%80%81%E7%B1%BB%2C%E6%8B%A5%E6%9C%89%E4%BC%AA%E5%88%9B%E5%AF%B9%E8%B1%A1%E7%9A%84%E4%BC%AA%E5%88%9B%E5%B1%9E%E6%80%A7%E5%92%8C%E8%A1%8C%E4%B8%BA%E5%AF%B9%E8%B1%A1%2C%E5%8F%91%E5%B1%95%E5%85%B1%E5%90%8C%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%8F%98%E5%8C%96%E9%80%9A%E6%8A%A5%2C%E5%8F%AF%E8%83%BD%E6%98%AFMSDN%E4%B8%AD%E7%9A%84%E6%8F%90%E7%A4%BA%2E%E5%BD%93%E4%BD%BF%E7%94%A8ICommand%E6%97%B6%E4%B8%8D%E8%B6%B3%E7%9A%84%E6%97%B6%E5%80%99%2C%E8%BF%99%E7%A7%8D%E7%89%B9%E6%AE%8A%E7%9A%84%E6%89%8B%E6%AE%B5%E5%AF%B9%E4%BA%8EMVVM%E6%A8%A1%E5%BC%8F%E9%9D%9E%E5%B8%B8%E6%9C%89%E5%BA%94%E7%94%A8%E2%80%9D
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="schemas.microsoft.com/expression/2010/interactions" <!--或者--> xmlns:i="schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="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="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的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。

