2016-03-03 25 views
0

當寫入C++/CX代碼,打算結合XAML,下面的圖案持續發生的歷史:用於C++/CX屬性模板

public ref class NoteViewModel sealed 
{ 

public: 

    property NoteList^ List 
    { 
     NoteList^ get() 
     { 
      if (!_List) 
      { 
       _List = ref new NoteList(); 
      } 
      return _List; 
     } 
    } 

private: 

    NoteList^ _List; 

}; 

不僅必須的手柄被用於構件NoteList^ _List,我們還需要該屬性和get()用於「綁定兼容性」。一個很好的特性是_List自動構造,如果get()發生。

問題1:有沒有簡單的方法來設置它,沒有帽子和ref新?

問題2:如果必須這樣,是否有一種巧妙的(模板)方法來減少冗長?

回答

0

關於問題#1,並不總是您在ViewModel上創建的屬性總是有後備存儲。特別是對於只讀屬性,它可能只是檢查基礎模型或嵌入對象上的值的結果,或者只是視圖模型上其他屬性的組合。但你經常需要一個支持商店。

導致問題2:我還沒有看到一個很好的基於模板的解決方案,因爲一般來說任何具有模板類型的東西都不能由於WinRT規則而公開。我見過使用C宏的模式來生成公共屬性模式,它是一個普通的getter/setter,帶有後備存儲,通常實現INotifyPropertyChanged。