可移植类库中的ViewModel支持
我正在尝试一个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;
...
}
是的,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));
}
}
}
咱们试试吧 !
链接地址: http://www.djcxy.com/p/68855.html