我已经看过很多关于MVVM-Patern的教程,但我仍然不明白为什么如果我想将信息从ViewModel发送回视图,我需要获取依赖属性或INotiyfyPropertyChanged
属性。
依赖项属性在属性更改时提供内置的更改通知,这意味着 WPF 知道控件值何时更改。
默认情况下,您的 ViewModel 类型不提供任何更改通知机制,因此,如果它们不支持这两个选项中的任何一个,视图应该如何知道 viewModel 中的属性何时被更改?
您需要 viewModel 使用这些选项之一,以便在属性值更改时通知视图。
这意味着,如果在代码中更改了属性值,则会更新用户界面,并且如果用户输入更改了属性,则 viewModel(以及最终的模型)也会更新以反映这些更改。(基本上,绑定的两端都需要一种相互传达属性更改的方式)。
INotifyPropertyChanged
接口是首选方法,因为这意味着您的 viewModel 不是特定于 WPF 的,可以由其他用户界面技术使用。 此外,依赖项属性只能在派生自 DependencyObject
的类型中使用。
首先:您根本不需要使用INotifyPropertyChanged
或DependencyObject
。
但是,这是使用绑定的中心点,在绑定,它正在侦听这些PropertyChanged
事件并执行更新的视图,以防绑定的相关属性已更改。
以下是有关这方面的更多信息:
关于绑定如何工作
Pub Sub aka Publish Subscribe 模式
INotiyfyPropertyChanged
- 我们在视图模型中使用的此属性,以便在 UI 中发生任何更改时,此属性将反映这些更改。