通常需要在 Model 类、ViewModel 类或两者上实现 INotifyPropertyChanged 吗?是否可以仅在模型上实现,而不是在 Viewmodel 上实现?如果不可能的模型那么为什么
问问题
271 次
3 回答
2
您必须了解 INotifyPropertyChanged 的含义。它的目的是在 WPF 中定义绑定时从目标向源发出通知。DependencyProperty 和 INotifyPropertyChanged 与绑定概念的自动更新相关。如果您需要绑定视图模型上的属性来查看,您必须实现通知机制以在视图模型发生更改时通知 UI。相同的规则适用于模型到视图。
假设您想在 .CS 文件中编写代码,Viewmodel.Name =" my new name"
并期望 TextBox 应该显示更改后的名称。
<TextBox Text="{Binding ViewModel.Name} "/>
这里视图模型需要实现 INotifyPropertyChanged。
<TextBox Text="{Binding Model.Name} "/>
这里模型需要实现 INotifyPropertyChanged
希望它澄清。
于 2015-09-09T15:10:28.647 回答
0
在这个讨论中可能值得注意的是,微软自己在他们自己的模型中添加了 INPC,例如当您订阅 Web 服务时自动生成的类。我在其他地方也见过它,包括在他们的 EF 资料中某处对它的模糊回忆。我自己使用 Castle Proxy 将其自动添加到我的 DAL 实体中,这样我就不必复制视图模型中的所有内容,尽管您也可以使用 Fody 等在后处理步骤中将其添加到 IL 中。
于 2015-09-09T22:08:56.840 回答