16

我很好奇什么是最好的处理方式ViewModels。是实现接口好INotifyPropertyChanged还是从ObservableObject.

ObservableObject类实现INotifyPropertyChanged并执行一些无聊的代码,例如RaisePropertyChanged.

INotifyPropertyChanged需要实现PropertyChanged事件。

从我的角度来看,使用起来似乎更合乎逻辑ObservableObject,但在大多数教程中,他们INotifyPropertyChangedViewModel.

你认为这是为了简单还是有逻辑的原因?

4

3 回答 3

17

ObservableObject是 Microsoft.Practices.Composite.Presentation 的一部分 - 即 Prism。它也在MVVM LightMVVM Foundation中实现。

INotifyPropertyChanged是 System.ComponentModel 的一部分 - 即它在核心库中。

因此,如果您还没有包括 Prism 或我坚持使用的其他框架之一INotifyPropertyChanged。仅仅为了获得这一门课而包含它似乎没有什么意义。

于 2012-04-10T17:12:55.140 回答
2

我什至会说,如果您要实现很多 ViewModel,那么实现 INotifyPropertyChanged 需要大量的管道代码,您最好创建自己的 ViewModel 基类,或者使用其中之一由 MVVM 框架为您提供(MVVM Light是我选择的框架)。

否则,你真的不是很“干”(不要重复自己)。

编辑 - 意外的一个想法

请记住,ObservableObject 通常只是 ViewModel 类相同基本功能的轻量级实现,为您提供 INPC,但省略了您可能在完整 ViewModel 中使用的一些其他内容。

于 2012-04-10T17:19:06.403 回答
0

一般来说,在所有其他条件相同的情况下,我建议采用实现接口而不是从祖先类派生的方法。您可以实现任意数量的接口,但您只有一个父级,所以我更喜欢“明智地”使用我的父级。在我可以得到我想要实现接口的情况下,我更愿意让我的选项在以后继承。

于 2012-04-10T17:16:18.677 回答