gpt4 book ai didi

c# - 准备必须以某种方式交互的松耦合 ViewModel 的最佳做法是什么

转载 作者:行者123 更新时间:2023-11-30 21:54:04 25 4
gpt4 key购买 nike

用例:

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

建议的已知解决方案:

  • 所有内容都可以合并到一个核心 MainViewModel 中 - 不幸的是,它没有分离关注点,而且代码不干净,可以与上帝对象反模式相提并论。
  • 另一种选择是使用 Messenger 或 EventAggregator,例如嵌入在 MVVM light 工具包中的 Messenger,但根据我的经验,这不是最佳解决方案。
  • 我考虑过 Prism 框架,但可能有点矫枉过正。
  • 另一个选择是将模块划分为功能性 ViewModel,其中一些应该注入(inject)到另一个,但这并不容易实现。

你知道什么好的做法建议吗?

目标:

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

最佳答案

我用过the mediator pattern过去用于 View 模型之间的交互。它基本上允许您拥有许多对信息和更改感兴趣的“同事”( View 模型),并且可以通过中介相互提醒。

关于c# - 准备必须以某种方式交互的松耦合 ViewModel 的最佳做法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33522832/

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