events - 模拟 subview 模型与父 View 模型交互的方法?

标签 events design-patterns mvvm

考虑使用 PimDetailVm 的某种个人信息管理演示,该演示将 Person 对象作为其模型。演示文稿将管理一个人的各个方面(姓名、联系方式、地址等),它们加在一起会使原始 View 模型膨胀。

所以我想为每个人拆分卫星 View 模型。原始 View 模型仍然负责允许和提交更新,因此至少需要知道 IsDirty 和 IsValid 是否为真,以及模型的当前状态。

干杯,
贝瑞尔

更新

我原来的帖子中的文字太多;也许更好地组织这件事会得到更多的回应并留下一些有用的东西,所以

父/子同步选项

  1. 国家石油公司
    • 优点 - 已由 VM 实现
    • 缺点 - 多次触发,可以说应该仅限于 DataBinding
  2. 调解员
    • 优点 - 清晰的意图分离
    • 缺点 - 不确定如何以通用方式实现和使用
  3. 事件聚合器
    • 优点 - 通用抽象
    • 缺点 - 不确定如何以通用方式实现和使用
  4. 域事件(即 PersonUpdated)并让模型成为同步源
    • 优点 - 可以说事件属于这里,简化了 VM 基础设施
    • 缺点 - 不确定
  5. 内部 View 模型事件(即 ViewModelUpdated)
    • 优点 - 比 INPC 更干净,因为它只发射一个并且其意图很明确
    • 缺点 - 不确定
  6. 硬链接(hard link)(即 Parent.Update())
    • 优点 - 意图明确,更容易调试
    • 缺点 - 紧耦合
  7. 从依赖对象继承
    • 优点 - 会喜欢它
    • 缺点 - 不可重用,与 WPF 调度程序紧密耦合
  8. 从 DynamicObject 继承 VM
    • 优点 - 你可以做你想做的事
    • 缺点 - 更改 ViewModel 结构,对没有经验的程序员来说很复杂
  9. 将 AOP 与拦截器相结合
    • 优点 - 做你想做的事
    • 缺点 - 学习曲线,不明显

最佳答案

为了真正结束这个问题,Pete Brown 解决了这个 here 的某些方面.

Josh Smith 在 hi 中也有两个非常有用的类(class) MVVM Foundation library解决这个问题的方法:Messenger 和 PropertyObserver。

关于events - 模拟 subview 模型与父 View 模型交互的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7555267/

相关文章:

c++ - Meyers 的 Singleton 模式线程安全实现吗?

c# - 避免因锁定 WPF 而导致 UI 阻塞

c# - 无法使用 MVVM 架构将数据绑定(bind)到文本框?

delphi - 用常规程序处理类事件(Delphi)

c# - 如何不触发 comboBox.SelectedIndexChange 并更新它?

javascript - 在卸载/离开页面之前检查给定表单中的更改

Java:在字符串变量中累积输出模式?

java - 合并多个事件流

winforms - WinForms 的 NHibernate 设计

c# - 将外键表示为 WPF StackPanel GridViewColumn 中的某个其他值