2

当我尝试将本地数据库添加到我的 Windows Phone 8 项目时,我收到了这个有趣的错误。

'e:\users\keenan\Documents\Visual Studio 2012\Projects\MAL.WindowsPhone\packages\Portable.MvvmLightLibs.4.1.27.1\lib\wp8\GalaSoft.MvvmLight 中都存在“System.ComponentModel.INotifyPropertyChanging”类型。 dll' 和 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\WindowsPhone\v8.0\System.dll'

为什么System.ComponentModel.INotifyPropertyChanging在 MVVM Portable NuGet 包的 WP8 库中?这是一个错误吗,因为我认为它与 Windows Phone 8 的 mscorlib 中已有的内容冲突。

请帮忙。

4

2 回答 2

3

请尝试最新的 Portable.MvvmLightLibs (4.1.27.3)。我不得不从 PCL 版本中删除 INotifyPropertyChanging,因为真的没有办法让它跨平台正常工作。

我们需要微软为此提供一个 shim(类似于 Microsoft.Bcl),以便在 WP 上正确拾取它。

如果您需要属性更改通知(在值更改之前 - 这是非常罕见的,很少有东西使用它),一种选择可能是创建自己的接口并在 ObservableObject 的派生类型中实现它(您可以覆盖 RaisePropertyChanging 方法以了解何时提出自己的事件)。

如果 Microsoft 在 PCL 中添加对 INotifyPropertyChangning 的支持,我肯定会将其添加回 MVVMLight。

于 2013-03-20T14:46:57.307 回答
0

您可以使用的一种简单解决方案是下载 MVVM Light 的源代码并删除 ObservableObject 中对 INotifyPropertyChanging 的所有引用。自己编译库,然后它应该可以正常工作。

于 2013-03-18T20:27:43.520 回答