- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
请帮助我理解 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/
我有一个名为 PurchaseView 的 View .此 View 显示有关购买、购买的内容和购买者的详细信息。我正在做的是,在这个 View 中,我同时放置了 ItemView和 ClientVi
public typealias ObservableObject = ObservableObject 为什么这个看似毫无意义的类型别名在这里? 最佳答案 您可以在 swift-corelibs-f
我有一个可以保存图像的游戏对象。每当找到游戏的图像 URL 时,就应该创建一个新的 GameImage 对象实例。然后它将获取图像并填充 UIImage 属性。发生这种情况时,应更新 UI 以显示图像
使用 SwiftUI 我想按下一个按钮并让它切换用于过滤图像的类。 在 SwiftUI 中,按钮会执行如下操作: @ObservedObject var currentFilter = FilterC
问题 为了实现应用程序代码的简洁外观,我为每个包含逻辑的 View 创建了 ViewModel。 一个普通的 ViewModel 看起来有点像这样: class SomeViewModel: Obse
我有一个设置为 ObservableObject 的类: class MatchData : Identifiable, ObservableObject { @Published
好的,SwiftUI 和 ObservableObject,在 iOS 13 上。我有 Model 实现了 ObservableObject: class Model: ObservableObjec
我有一个类Foo对 ObservableObject 具有多个依赖项.出于测试目的,我想创建这些对象的模拟版本,但我看不到这样做的方法,然后将它们注入(inject) Foo . 我无法创建另一个协议
我想在 SwiftUI 中有一个可选的 @ObservedObject 但我一直收到编译时错误。 Property type 'AModel?' does not match that of the
我有一个 ObservableObject class CurrentPosition: ObservableObject { @Published var northEast = CLLoc
我在 View 中创建了一个 ObservableObject。 @ObservedObject var selectionModel = FilterSelectionModel() 我在 Filt
class Group: ObservableObject { @Published var size: CGFloat = 22 } struct content: View { @
我对 SwiftUI 很陌生(而且我也有一段时间没有接触过 Swift)所以请耐心等待: 我有这样的看法: import SwiftUI import Combine var settings = U
当 SwiftUI View 绑定(bind)到 ObservableObject 时,当被观察对象发生任何变化时, View 会自动重新加载 - 无论是否更改直接影响 View 。 这似乎会给非平凡
我想在 ObservableObject 中导入一个实际的变量集: 我的代码是: import SwiftUI struct HomepageView: View { @ObservedOb
请帮助我理解 MVVM 模式中的一件事: 例如,我需要在 map 上显示城市。在 ViewModel 中,我有 ObservableCollection,它绑定(bind)到 View ItemsSo
我在我的 DateView 中有一个这样声明的 ObservableObject: import SwiftUI class SelectedDate: ObservableObject {
我尝试使 NWPathMonitor 成为一个可观察对象,如果有网络连接则返回 true,否则返回 false。 你能帮我吗,因为我的解决方案不起作用。 谢谢 import Foundation im
我正在尝试学习与 SwiftUI 结合,我正在努力如何使用 ObservableObject 更新我的 View (来自 UIKit) (以前的 BindableObject )。显然,问题是方法 u
我有一个 SwiftUI 项目和一个绑定(bind)到 EnvironmentObject 的 View 。该对象包含一个@Published 属性。 import Foundation class
我是一名优秀的程序员,十分优秀!