3

我已经将 System.Windows.Interactivity.WPF 库与 MVVM Light 一起使用。

我删除了 System.Windows.Interactivity.WPF 库,因为它的发布日期很旧。我安装了 Microsoft.Xaml.Behaviors.Wpf 库并更新了与内容相关的内容。

工作进展顺利,除了一个。问题是如果我使用 Microsoft.Xaml.Behaviors.Wpf 与 MVVMLight 的 EventToCommand 的交互,如下所示,编译器会显示错误。

 xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
 xmlns:mvvm="http://www.galasoft.ch/mvvmlight"

<i:Interaction.Triggers>
    <i:EventTrigger EventName="SelectedItemChanged">
        <mvvm:EventToCommand Command="{Binding CPUSelectedCommand}"
                         PassEventArgsToCommand="True"
                         EventArgsConverter="{localConverters:SelectedItemConverter}" />
    </i:EventTrigger>
</i:Interaction.Triggers>

错误消息是“错误 MC3074:XML 命名空间‘ http://www.galasoft.ch/mvvmlight ’中没有 EventToCommand 标记。”

如果我使用 CallMethodAction 或 InvokeCommand Microsoft.Xaml.Behaviors.Wpf 那么效果很好,但我必须使用 EventToCommand 因为要将参数传递给命令。

我应该怎么做才能解决这个问题?有人可以告诉我解决方案吗?

谢谢阅读。

4

1 回答 1

3

简短的回答:没有。

EventToCommandMvvmLight 中的类继承自a 的属性,System.Windows.Interactivity.TriggerAction<T>不能添加到.ActionsMicrosoft.Xaml.Behaviors.EventTrigger

所以你的选择是:

  1. 恢复使用System.Windows.Interactivity.dll.
  2. 创建您自己的EventToCommand继承自Microsoft.Xaml.Behaviors.TriggerAction<T>. 您可以从GitHub 上的现有实现开始。
于 2020-01-14T15:13:40.447 回答