为啥 ViewModel 应该实现 INotifyPropertyChanged?
Posted
技术标签:
【中文标题】为啥 ViewModel 应该实现 INotifyPropertyChanged?【英文标题】:Why does the ViewModel should implement INotifyPropertyChanged?为什么 ViewModel 应该实现 INotifyPropertyChanged? 【发布时间】:2017-03-09 18:16:06 【问题描述】:考虑到只有用户通过用户界面更新ViewModels
/Models
的情况,没有外部访问显示的数据。
在这种情况下,为什么 ViewModel 应该实现 INotifyPropertyChanged
?
只有在外部访问数据时,我才有意义让ViewModel
实现它,以便必须以某种方式通知 UI 关于外部启动的属性更改并且您设置了 Mode=TwoWay
/@ 987654327@.
我看到的大多数示例 MVVM 实现从不订阅 anythingViewModels
PropertyChangedEventHandler
,但仍然实现它,只是因为 必须完成,因为它是 mvvm。
【问题讨论】:
考虑两个文本框链接到同一属性的示例。当 textbox1 改变时, textbox2 应该同步到它。 您不需要订阅任何视图模型 PropertyChangedEventHandler,这是通过使用将执行订阅的绑定来完成的。 我猜如果您的应用程序只输入数据,那么可能。但这是一个非常无聊的应用程序。你没有数据验证?集合永远不会拒绝输入? 听起来您还没有编写 MVVM 应用程序,因为当您编写时,您确实希望 UI 在应用程序状态发生变化时更新。 In MVVM should the ViewModel or Model implement INotifyPropertyChanged?的可能重复 【参考方案1】:如果用户更改视图中的一项,它可能会影响视图模型中的多个项目,或者它可能会影响视图模型中一项的状态,进而影响视图中多个项目的呈现。
我不得不转过头来问,鉴于上述陈述,您为什么不实施 INotifyPropertyChanged?这几乎不是一个巨大的开销。
【讨论】:
以上是关于为啥 ViewModel 应该实现 INotifyPropertyChanged?的主要内容,如果未能解决你的问题,请参考以下文章
为啥需要使用 inotify_add_watch() 调用 read() 两次
在 MVVM 中,ViewModel 或 Model 是不是应该实现 INotifyPropertyChanged?
inotify FD - 为啥限制每个用户 id 而不是每个进程?