ObservableObject
ObservableObject
是工具包为我们提供的一个实现了 INotifyPropertyChanged
接口的基类1。
它拥有两个子类:
ObservableValidator
ObservableRecipient
分别在基类的基础上提供了一些额外的功能。这些内容将会在它们各自的文档中介绍。
ViewModelBase
实际使用时,通常建议写一个 ViewModelBase
来继承这个基类,然后所有的 ViewModel 都继承这个 ViewModelBase
。这样做的好处是,可以在 ViewModelBase
中实现一些通用的逻辑;此外,还有助于后续借助反射等来实现 ViewModelLocator
等功能(因为并不是只有严格意义上的 ViewModel 才能继承这个基类;任何想要具有通知功能的类都可以继承)。
ObservableObject 类提供的方法
ObservableObject
除了实现了 INotifyPropertyChanged
接口之外,还提供了一些方法来帮助我们实现通知功能。比如:
OnPropertyChanged
(拥有两个方法重载)SetProperty
(包含六个方法重载)SetPropertyAndNotifyOnCompletion
(包含五个重载,用于TaskNotifier
)
实际使用
实际上,因为有源生成器(Source Generator),大多数情况下,我们并不需要手动去调用这些方法,甚至不需要书写属性。关于这部分内容,请参见 源生成器
-
实际上它实现了不仅仅这个接口,还有
INotifyPropertyChanging
。这个接口的作用是在属性值发生变化之前通知。但是在实际使用中,我们很少会用到这个接口,因此这里不做介绍。 ↩