我正在一个 VS 2010 项目中试用 PCL,我希望在该项目中支持 WPF(4 及更高版本)和 Silverlight(4 及更高版本)。下面的MS 文档摘录让我感到困惑。
似乎是在 PCL 项目中引用 System.Windows,但我不知道该怎么做。
我必须做什么才能在我的 PCL 项目中使用 ICommand 和 INotifyPropertyChanged?
支持视图模型模式 当您面向 Silverlight 和 Windows Phone 7 时,您可以在您的解决方案中实现视图模型模式。实现此模式的类位于 Silverlight 的 System.Windows.dll 程序集中。创建面向 .NET Framework 4 或 Xbox 360 的可移植类库项目时,不支持 System.Windows.dll 程序集。
此程序集中的类包括以下内容:
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 以外的程序集中实现的。要将这些类与可移植类库项目一起使用,您必须引用 System.Windows.dll 而不是 .NET Framework 4 文档中列出的程序集
编辑
INotifyPropertyChanged 不可用;下面的代码不会编译
public abstract class ViewModelBase : INotifyPropertyChanged
{
public virtual event PropertyChangedEventHandler PropertyChanged;
...
}