gpt4 book ai didi

c# - MVVM 模式,ObservableObject

转载 作者:太空宇宙 更新时间:2023-11-03 11:12:32 25 4
gpt4 key购买 nike

请帮助我理解 MVVM 模式中的一件事:

例如,我需要在 map 上显示城市。在 ViewModel 中,我有 ObservableCollection,它绑定(bind)到 View ItemsSource。ObservableCollection 包含类型为“City”的对象。“City”类必须继承自 ObservableObject(我使用 MVVM 工具包)吗?或者我应该创建一个包装类,从 ObservableObject 继承它,在 ViewModel 中使用来自“City”对象的数据创建新的包装对象并将它们添加到集合中?

谢谢!

最佳答案

假设您的城市类在您的模型中,并且您实际上需要了解城市对象属性的更改 - 那么您应该为它创建一个包装器(即 CityViewModel)。您的包装器应该监听通知 City 类的任何更改的事件,并触发相关的 Property Change 通知。

模型类的设计应适合模型,不应更改以适合您的 View - 首先拥有 ViewModel 的目的是从您的 View 中抽象出您的模型。模型应该对 View 一无所知。

如果您的 City 类的属性没有改变,或者您不关心它们是否改变(并且您不是纯粹主义者),那么您可以直接公开它 - 而无需继承 ObservableObject。(虽然我不使用 MVVM 工具包,但我不明白为什么通常你需要继承 ObservableObject 只是因为你将 City 对象存储在 ObservableCollection 中)。

然而,纯粹的 View 是包装您绑定(bind)的所有内容,并且永远不会将模型中的任何内容直接暴露给 View 。

关于c# - MVVM 模式,ObservableObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13506922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com