Visual Studio 2017 - Expression交互发生了什么?

amn*_*sia 35 c# wpf mvvm visual-studio-2017

我广泛使用Expression interaction的CallMethodAction以MVVM友好的方式处理来自XAML的事件.

我刚刚在VS2017中创建了一个新的WPF项目,现在我看到旧的Expression命名空间已经消失了.我在MSDN上找到了这个页面,这是我正在寻找的动作,但在引用该程序集并添加命名空间后,它不包含CallMethodAction.该页面适用于Silverlight,这是WPF,所以我担心行动不再可用.

那么有人知道它是否已被删除/替换?现在应该如何在viewmodel上调用事件处理程序?

(我知道InvokeCommandAction,但我更喜欢CallMethodAction,因为它会转发原始事件参数,并允许取消预览事件.)

编辑:只是为了前进我尝试了InvokeCommandAction但它不再以相同的方式工作,我找不到任何关于新用法的文档.

我确实在MSDN上找到了Microsoft.Xaml.Interactions命名空间的这个引用,该命名空间似乎包含我需要的类,但该程序集似乎不存在.

我觉得我在这里遗漏了一些明显的东西.我不知道他们如何能够对事件做出重大改变.

nma*_*ler 82

使用Visual Studio 2017安装程序安装"Blend for Visual Studio SDK for .NET",您可以在"单个组件"页面的"SDK,库和框架"标题下找到它.

  • 这是推荐的解决方案 (6认同)

小智 13

2020 年的一些更新:

正如 Jan 在其他问题中提到的

Microsoft 开源了 XAML Behaviors 并发布了一篇关于如何更新到此版本的博客文章

继续更新的步骤:

  1. 删除对“Microsoft.Expression.Interactions”和“System.Windows.Interactivity”的引用。
  2. 安装Microsoft.Xaml.Behaviors.Wpf NuGet 包。
  3. XAML文件-取代的xmlns命名空间http://schemas.microsoft.com/expression/2010/interactivityhttp://schemas.microsoft.com/expression/2010/interactionshttp://schemas.microsoft.com/xaml /行为
  4. C# 文件 – 用“Microsoft.Xaml.Behaviors”替换 c# 文件“Microsoft.Xaml.Interactivity”和“Microsoft.Xaml.Interactions”中的使用


mm8*_*mm8 9

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/