【发布时间】:2023-04-02 07:42:01
【问题描述】:
我已经看过很多关于 MVVM-Patern 的教程,但我仍然不明白如果我想将信息从 ViewModel 发送回 View,为什么我需要获取 Dependency-Property 或 INotiyfyPropertyChanged-Property .
【问题讨论】:
标签: wpf mvvm viewmodel dependency-properties inotifypropertychanged
我已经看过很多关于 MVVM-Patern 的教程,但我仍然不明白如果我想将信息从 ViewModel 发送回 View,为什么我需要获取 Dependency-Property 或 INotiyfyPropertyChanged-Property .
【问题讨论】:
标签: wpf mvvm viewmodel dependency-properties inotifypropertychanged
依赖属性在属性更改时提供内置更改通知,这意味着 WPF 知道控件值何时更改。
默认情况下,您的 ViewModel 类型不提供任何更改通知机制,因此如果它们不支持这些选项中的任何一个,视图应该如何知道您的 viewModel 中的属性何时发生更改?
您需要您的 viewModel 使用这些选项中的任何一个,以便在属性值更改时可以通知视图。
这意味着如果在代码中更改了属性值,则用户界面会更新,如果用户输入更改了属性,则您的 viewModel(最终是您的模型)也会更新以反映这些更改。 (基本上,绑定的双方都需要一种将属性更改相互通信的方式)。
INotifyPropertyChanged 接口是首选方法,因为这意味着您的视图模型不是特定于 WPF 的,并且可以被其他用户界面技术使用。此外,依赖属性只能用于派生自 DependencyObject 的类型。
【讨论】:
首先:您根本不需要使用INotifyPropertyChanged 或DependencyObject。
但是,这是使用 Binding 的中心点,其中有一些 Pub / Sub 机制
Binding,它正在监听那些PropertyChanged 事件并进行更新
如果 Binding 的相关属性已更改,则视图的视图。
这里有更多信息:
【讨论】:
INotiyfyPropertyChanged - 我们在视图模型中使用了这个属性,这样如果 UI 发生任何变化,这个属性就会反映这些变化。
【讨论】: