我广泛使用表达式互动' CallMethodAction以MVVM友好的方式处理来自XAML的事件。
我刚刚在VS2017中创建了一个新的WPF项目,现在我看到旧的Expression命名空间已经消失了。我发现this page on MSDN这是我正在寻找的动作,但在引用该程序集并添加命名空间后,它不包含CallMethodAction。该页面适用于Silverlight,这是WPF,所以我担心行动不再可用。
所以有人知道它是否已被删除/替换?如何才能在viewmodel上调用事件处理程序?
(我知道InvokeCommandAction,但我更喜欢CallMethodAction,因为它会转发原始事件参数,并允许取消预览事件。)
编辑:为了继续前进我尝试了InvokeCommandAction,但它也不再以相同的方式工作,我找不到有关新用法的任何文档。
我确实为Microsoft.Xaml.Interactions命名空间找到this reference on MSDN,该命名空间似乎包含我需要的类,但该程序集似乎不存在。
我觉得我在这里遗漏了一些明显的东西。我不知道他们如何能够对事件进行彻底的改变,就像回应事件一样。
答案 0 :(得分:79)
使用Visual Studio 2017安装程序安装" Blend for Visual Studio SDK for .NET",您可以在"个人组件"页面," SDKs,库和框架"标题。
答案 1 :(得分:9)
关于2020年的一些更新:
As mentioned by Jan in other question:
Microsoft开源了XAML行为,并发布了blog post如何更新到该版本。
进行更新的步骤:
答案 2 :(得分:8)
CallMethodAction
在Microsoft.Expressions.Interactions.dll中定义。此程序集不是.NET Framework的一部分,但您可以使用NuGet:https://www.nuget.org/packages/MicrosoftExpressionInteractions/
InvokeCommandAction
类在System.Windows.Interactivity.dll程序集中定义:https://www.nuget.org/packages/System.Windows.Interactivity.WPF/