Visual Studio 2017 - 表达式交互发生了什么变化?

时间:2017-03-27 13:30:22

标签: c# wpf mvvm visual-studio-2017

我广泛使用表达式互动' CallMethodAction以MVVM友好的方式处理来自XAML的事件。

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

所以有人知道它是否已被删除/替换?如何才能在viewmodel上调用事件处理程序?

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

编辑:为了继续前进我尝试了InvokeCommandAction,但它也不再以相同的方式工作,我找不到有关新用法的任何文档。

我确实为Microsoft.Xaml.Interactions命名空间找到this reference on MSDN,该命名空间似乎包含我需要的类,但该程序集似乎不存在。

我觉得我在这里遗漏了一些明显的东西。我不知道他们如何能够对事件进行彻底的改变,就像回应事件一样。

3 个答案:

答案 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如何更新到该版本。

进行更新的步骤:

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

答案 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/