如何将MvvmLight与System.Windows.Interactivity一起使用?

时间:2016-02-15 16:12:46

标签: c# wpf xaml mvvm mvvm-light

非常简单的问题:如何将MvvmLight与System.Windows.Interactivity一起使用?!

这是我的包的样子:

<packages>
  <package id="CommonServiceLocator" version="1.3" targetFramework="net452" />
  <package id="Expression.Blend.Sdk" version="1.0.2" targetFramework="net452" />
  <package id="MvvmLightLibs" version="5.2.0.0" targetFramework="net452" />
  <package id="Ninject" version="3.2.2.0" targetFramework="net452" />
</packages>

任何人都可以建议我,我应该使用哪些版本来使这种代码正常工作,没有错误/警告?

    <userControls:MyUserControl x:Name="Foo" Margin="10,110,10,10" BorderStrokeThickness="5">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="FooClick">
                <command:EventToCommand Command="{Binding Mode=OneWay, Path=ClickCommand}" 
                                        PassEventArgsToCommand="True" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </userControls:MyUserControl>

我在EventToCommand上获得了不同的错误消息。现在我有错误:

  

无法添加类型&#39; EventToCommand&#39;到类型&#39; TriggerActionCollection&#39;的集合。只有类型&#39; T&#39;是允许的。

几秒钟前,我有:

  

类型&#39; EventToCommand&#39;来自汇编&#39; GalaSoft.MvvmLight.Platform&#39;是用旧版本的   Blend SDK,Windows Presentation Framework 4不支持   项目

我没有做任何改变:/(重建/重新开放解决方案几次)

编辑:我刚刚重新编译,我现在再次出现第二个错误

EDIT2:

现在我有:

xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

我无法添加(我在参考文献中有GalaSoft.MvvmLight.Extras dll)

xmlns:command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4"

4 个答案:

答案 0 :(得分:0)

检查您的命名空间,它们应该是:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4"

答案 1 :(得分:0)

我偶然发现了这个解决方案(解决方法),这为我们继续使用XAML并正确预览更新提供了一种方式。

启用“启用项目代码”选项后,我会看到确切的错误。禁用此功能后,错误不会再出现,并且可以继续进行高效工作。

这是一个困扰我的荆棘(我相信很多其他人)好几个月。希望很快就会解决导致此问题的潜在错误。在那之前,我祈祷这个答案可以对你有所帮助。

Enable project code

Cannot add instance of type 'EventToCommand' to a collection of type 'TriggerActionCollection'. Only items of type 'T' are allowed.

The type 'EventToCommand' from assembly 'GalaSoft.MvvmLight.Platform' is built with an older version of the Blend SDK, and is not supported in a Windows Presentation Framework 4 project.

答案 2 :(得分:0)

对于那些在这个页面上磕磕绊绊的人,我遇到了完全相同的问题,一切都在构建,但设计师没有工作。

我通过将目标框架从4.6设置为 .net framework 4

来解决它

我就这样做了

  1. 删除所有galasoft nugget引用并删除system.windows.interactivity

  2. 转到项目设置 - &gt;应用程序 - &GT;目标框架并将其设置为.net Framework 4

  3. 将引用放回去,这次它们都将使用相同的框架

  4. 这可能会导致system.Windows.interactivity导致的构建错误 (找不到文件错误)

    1. 打开App.config
    2. 删除“system.Windows.interactivity”dependentAssembly

答案 3 :(得分:0)

通过执行以下操作,我可以越过Cannot add instance of type 'EventToCommand' to a collection of type 'TriggerActionCollection'. Only items of type 'T' are allowed

  1. 清洁溶液
  2. 删除binobj目录
  3. 重新启动Visual Studio
  4. 重建解决方案