准备必须以某种方式交互在一起的糟糕耦合的ViewModels的好做法是什么

本文关键字:耦合 ViewModels 是什么 在一起 交互 方式 | 更新日期: 2023-09-27 18:20:40

用例:

  • 假设有一个以WPF加MVVM方式构建的工具
  • 说到它的外观,它可以与VisualStudioIDE或其他IDE进行比较
  • 它包含几个可固定的工具
  • 它包含菜单操作和一些额外的页脚信息,这些信息可以根据不同的操作进行更改,例如当项目成功加载时
  • 如果使用加载另一个项目,则应在不同的视图上重新加载一些数据
  • 我想知道如何实现关注点的良好分离,同时实现模块和视图模型之间的交互

建议的已知解决方案:

  • 所有东西都可以组合在一个核心MainViewModel中——不幸的是,它没有给出concrns的分离,代码也不干净,可以比作God对象反模式
  • 另一种选择是使用Messenger或EventAggregator,例如嵌入MVVM轻型工具包中的Messenger之类的东西,但根据我的经验,这不是最好的解决方案
  • 我考虑过Prism框架,但也许它太夸张了
  • 另一种选择是将模块划分为功能性ViewModel,其中一些模块应该注入到另一个模块中,但这并不容易实现

你知道什么好的实践建议吗?

目标:

  • 关注点分离
  • 每个ViewModel的单一功能责任
  • 可测试性

准备必须以某种方式交互在一起的糟糕耦合的ViewModels的好做法是什么

我过去曾使用中介模式进行视图模型之间的交互。它基本上允许您拥有许多对信息和更改感兴趣的"同事"(视图模型),并可以通过中介相互提醒。