6

我嘗試了一個VS 2010項目中的PCL,我想支持WPF(4及更高版本)和Silverlight(4及更高版本)。下面的MS documentation摘錄令我感到困惑。Portable Model Library中的ViewModel支持

似乎要說在PCL項目中引用System.Windows,但我不知道該怎麼做。

我必須做什麼才能在我的PCL項目中使用ICommand和INotifyPropertyChanged?

支持視圖模型圖案時,你的目標Silverlight和 的Windows Phone 7,您可以在您的 解決方案視圖模型模式。實現此模式的類位於Silverlight的 System.Windows.dll程序集中。

系統:當你創建一個可移植類庫 項目,目標在本次大會在.NET Framework 4或Xbox 360

,這些類包括以下不支持System.Windows.dll中 組裝。 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框架4也包含這些類,但它們是 實現的 程序集而不是System.Windows.dll。要使用便攜式 類庫項目中使用這些類,必須引用System.Windows.dll中,而不是在 列出的.NET框架4文檔組件

編輯

INotifyPropertyChanged的不可用;下面的代碼將無法編譯

public abstract class ViewModelBase : INotifyPropertyChanged 
{ 
    public virtual event PropertyChangedEventHandler PropertyChanged; 

    ... 

} 
+0

您爲'打印機控制語言'標記了代碼'pcl'。你的意思是「便攜式類庫」嗎? – nvoigt 2013-05-02 14:04:14

+0

@nvoight - 謝謝! – Berryl 2013-05-02 14:37:42

回答

2

是的,MSDN是混淆了這一點(有沒有錯誤?)

基本上,你什麼都沒有做!

當您創建PCL項目時,只需選擇適當的框架即可。 new pcl project

PCL自動爲您管理參考。

public abstract class ViewModelBase : INotifyPropertyChanged 
    { 
     public event PropertyChangedEventHandler PropertyChanged; 

     protected virtual void OnPropertyChanged(string propName) 
     { 
      if (PropertyChanged != null) 
      { 
       PropertyChanged(this, new PropertyChangedEventArgs(propName)); 
      } 
     } 
    } 

讓我們試試!

+0

這是令人困惑的部分 - 我做到了!看我的編輯;我無法訪問INotifyPropertyChanged。 – Berryl 2013-05-02 14:48:43

+0

你是否在VS 2010上使用PCL插件(如我)或VS2012以及NativeE支持? – Berryl 2013-05-02 14:49:40

+0

VS 2010與PCL(喜歡你) – Cybermaxs 2013-05-02 15:04:00

相關問題