为什么ViewModel需要实现INotifyPropertyChanged或使用依赖属性?

时间:2012-06-17 12:27:15

标签: wpf mvvm viewmodel dependency-properties inotifypropertychanged

我见过很多关于MVVM-Patern的教程,但我仍然不明白为什么我需要获取Dependency-Property或INotiyfyPropertyChanged - 属性,如果我想从ViewModel发回信息观点。

3 个答案:

答案 0 :(得分:2)

依赖项属性为属性更改时提供内置更改通知,这意味着WPF知道控件值何时发生更改。

默认情况下,您的ViewModel类型不提供任何更改通知机制,因此如果它们不支持这两个选项,那么视图应该知道viewModel中的属性何时被更改?

您需要viewModel使用其中任何一个选项,以便在属性值更改时通知视图。

这意味着如果在代码中更改了属性值,则会更新用户界面,如果通过用户输入更改了属性,则还会更新viewModel(最终是您的模型)以反映这些更改。 (基本上,绑定的两边都需要一种将属性更改传递给彼此的方式)。

INotifyPropertyChanged接口是首选方法,因为它意味着您的viewModel不是特定于WPF的,可以被其他用户界面技术使用。此外,依赖项属性只能用于派生自DependencyObject的类型。

答案 1 :(得分:1)

首先:您根本不需要使用INotifyPropertyChangedDependencyObject

但是,这是使用Binding的中心点,有一些Pub / Sub机制 Binding,正在侦听那些PropertyChanged事件并进行更新 如果Binding的相关属性已更改,则为视图。

以下是有关该信息的更多信息:

SO on how binding works

Pub Sub aka Publish Subscribe Pattern

答案 2 :(得分:0)

INotiyfyPropertyChanged - 我们在viewmodel中使用此属性,以便在UI中发生任何更改时,此属性将反映这些更改。