2016-03-03 46 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。