MVVM是基于XAML应用的一种设计模式。它保证了依赖的分离,测试能力以及可维护性。视图模型包含有绑定到此视图的所有属性。几乎所有你希望绑定到视图的元素,都必须要在视图模型中增加一个属性来控制它,即使你想插入的是一个加载轮。这么强大的功能,要感谢这种绑定机制,特别是对INotifyPropertyChanged接口的通知功能的应用。
可是,这种模式的缺点是,属性的数量会很大,特别是在你有一个富视图的时候。这会使你的视图模型看起来非常长。再考虑到对每一个属性,几乎都需要下面6行代码:
private string _name; public String Name { get { return _name; } set { Set(ref _name = value); } }
假设在每一个视图模型中你只有10个属性。那么,你将有60行的属性代码!
第一种解决方案是使用Frody扩展来给属性做修饰。这将允许你不使用老式的字段或者Set(..)方法来声明绑定的属性。每个属性你仅仅只需2行代码:
[PropertyChanged] public String Name { get; set; }
让我们使之更好,将20行缩减到1行。那可能吗!可能!我们需要的是有这样一种对象,它可以包含许多不同类型的对象,而且每个对象是可声明的。幸运的是,ObservableCollection<object>可以做到。考虑使用" = "操作符而不是Add(..)方法,因为Add不允许声明。为了实现其中的细节,Windows Store 8.1模版(Hub app 和 GridView app)带来了一个名为ObservableDictionary的对象。这其中还有一个好处是,它使用了字符型关键字来标示一个数值,而不是用的数字型的。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务