我正在使用VS2013 Express。我在WPF和MVVM中是一个新手。我已经使用NuGet将mvvmlight下载到我的项目中。我正在尝试使用GalaSoft_MvvmLight_Command:EventToCommand。据我所知,我必须通过添加 namespace 在xaml中添加引用:

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

但是,不幸的是,我得到了错误,说:



我找到了一些信息,必须包含GalaSoft.MvvmLight.WPF45程序集,但在packages\MvvmLightLibs.5.0.0.1\lib\文件夹中看不到该dll。每个.NET版本都有很多文件夹,但是每个程序集名称都是相同的,没有WPF45 sufix。这是怎么回事?在哪里可以找到此GalaSoft.MvvmLight.WPF45.dll程序集?还是在版本5中,对名称进行了一些更改?

编辑:
使用对象浏览器,我发现EventToCommand在GalaSoft.MvvmLight.Command命名空间的GalaSoft.MvvmLight.Platform程序集中。所以我做了
xmlns:GalaSoft_MvvmLight_Command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"

我现在可以编译项目,但是在xaml中仍然会出现错误(奇怪的是):







和xaml编辑器无法正确显示窗口(标记无效)。

编辑2:

无效标记的解决方案。

在将 namespace 更改为xmlns:cmd="http://www.galasoft.ch/mvvmlight"之后,我还将项目的目标框架从4.5更改为3.5。 IDE显示一个错误,提示针对目标其他框架的NuGet软件包很少,所以我回到4.5-现在可以神奇地工作了;)。谢谢大家的帮助。

最佳答案

假设您已经拥有4.0.0版,现在可以在XAML中完成以下操作。击败1或更高:

xmlns:cmd =“http://www.galasoft.ch/mvvmlight”

我在发行说明的底部找到了这个:http://www.mvvmlight.net/installing/changes/

细节
Extras程序集中的GalaSoft.MvvmLight.Command的XmlnsDefinitionAttribute

由于添加了XmlnsDefinitionAttribute,因此可以简化XAML中MVVM Light EventToCommand操作的包含。请参阅下面的之前和之后:

前:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

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

xmlns:cmd="http://www.galasoft.ch/mvvmlight"
x:Class="MvvmLight4.MainPage">

后:
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:cmd="http://www.galasoft.ch/mvvmlight"
x:Class="MvvmLight4.MainPage">

10-07 22:42