WP8 MvvmLight命名空间丢失且EventToCommand不存在

Lib*_*tal 5 c# mvvm mvvm-light windows-phone-8

我在Windows Phone 8项目中仅使用MVVM Light库(来自Nuget包),我想使用EventToCommandToggleSwitch.我有这些代码行:

<toolkit:ToggleSwitch x:Name="LockSwitch"
        IsChecked="{Binding IsLock, Mode=TwoWay}">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Toggled">
            <Command:EventToCommand 
                Command="{Binding DataContext.NavigateToArticleCommand, ElementName=LayoutRoot}"
                CommandParameter="{Binding}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</toolkit:ToggleSwitch>
Run Code Online (Sandbox Code Playgroud)

问题是VS显示错误:

错误1名称"EventToCommand"在命名空间"clr-namespace:GalaSoft.MvvmLight.Command; assembly = GalaSoft.MvvmLight.Extras.WP8"中不存在.

错误2找不到类型'Command:EventToCommand'.验证您是否缺少程序集引用,并且已构建所有引用的程序集.

错误3标记'EventToCommand'在XML命名空间'clr-namespace中不存在:GalaSoft.MvvmLight.Command; assembly = GalaSoft.MvvmLight.Extras.WP8'.

我在文件Styles.xaml中有上面的行,它是一个ResourceDictionary并且ToggleSwitch是a的一部分DataTemplate.我使用这一行包括MvvmLight库:

xmlns:Command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP8"
Run Code Online (Sandbox Code Playgroud)

怎么了?为什么我会收到错误?我试图使用谷歌,但我找不到解决方案.

Jus*_* XL 6

用于包含命令的引用是错误的.正确的参考是

xmlns:Command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"
Run Code Online (Sandbox Code Playgroud)

没有编写一行代码就可以获得这个引用.

下载MvvmLight nuget包后,编译项目,然后在Expression Blend中打开xaml文件.

然后单击左侧工具栏(底部的)上的Assets图标并开始键入"eventtocommand"(参见下图).

在此输入图像描述

一旦您看到EventToCommand出现在Assets面板中,将其拖放到您的顶部ToggleSwitch.而已!引用将自动添加到您的xaml中以及实际的命令代码中.