使用MVVMLight可移植库在两个地方'System.ComponentModel.INotifyPropertyChanging'

时间:2013-03-18 14:15:20

标签: c# mvvm mvvm-light portable-class-library

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

  

类型'System.ComponentModel.INotifyPropertyChanging'存在于   'e:\ users \ keenan \ Documents \ Visual Studio   2012 \项目\ MAL.WindowsPhone \包\ Portable.MvvmLightLibs.4.1.27.1 \ LIB \ WP8 \ GalaSoft.MvvmLight.dll”   和'C:\ Program Files(x86)\ Reference   组件\微软\框架\的WindowsPhone \ V8.0 \ System.dll中“

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

请帮忙。

2 个答案:

答案 0 :(得分:3)

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

我们需要Microsoft为此提供一个垫片(类似于Microsoft.Bcl),以便在WP上正确选择它。

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

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

答案 1 :(得分:0)

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