我正在尝试在VS 2010项目中使用PCL,我希望支持WPF(4及更高版本)和Silverlight(4及更高版本)。下面的MS documentation 摘录让我感到困惑。
似乎要在PCL项目中引用System.Windows,但我不知道该怎么做。
我必须做些什么才能在我的PCL项目中安装ICommand和INotifyPropertyChanged?
支持视图模型模式当您定位Silverlight和 在Windows Phone 7中,您可以在您的Windows中实现视图模型模式 解。实现此模式的类位于 Silverlight的System.Windows.dll程序集。 System.Windows.dll 创建可移植类库时不支持程序集 面向.NET Framework 4或Xbox 360的项目。
此程序集中的类包括以下内容:
System.Collections.ObjectModel.ObservableCollection
System.Collections.ObjectModel.ReadOnlyObservableCollection
System.Collections.Specialized.INotifyCollectionChanged
System.Collections.Specialized.NotifyCollectionChangedAction
System.Collections.Specialized.NotifyCollectionChangedEventArgs
System.Collections.Specialized.NotifyCollectionChangedEventHandler
System.Windows.Input.ICommand
.NET Framework 4也包含这些类,但它们是 实施于 System.Windows.dll以外的程序集。将这些类与Portable Class一起使用 库项目,您必须引用System.Windows.dll而不是列出的程序集 .NET Framework 4文档
INotifyPropertyChanged不可用;下面的代码不会编译
public abstract class ViewModelBase : INotifyPropertyChanged
{
public virtual event PropertyChangedEventHandler PropertyChanged;
...
}
答案 0 :(得分:2)
是的,MSDN在这一点上令人困惑(是否有错误?)
基本上,你无事可做!
创建PCL项目时,只需选择适当的框架即可。
PCL会自动为您管理参考。
public abstract class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}
}
我们试试吧!