我有一个小应用程序,其中概述了一些项目(条目)。概览列表中的条目标题是条目的属性。当我单击一个条目时,应该会打开一种选项卡,我可以在其中编辑该条目。当我编辑并保存条目时,概述选项卡应在下次更新。
这是一个模型以便更好地理解。
应用程序基于 MVVM 模式。每个 View 都有一个 ViewModel 作为 DataContext。每个 ViewModel 使用一个 Model并且每个 Model 都有一个Database。
概览选项卡有它自己的视图、视图模型和模型(对)。还有标签。条目的每个选项卡都使用相同的对(单例实例)。如果选择了其他选项卡,则仅更新少数绑定。
我的问题是如何在选项卡之间进行通信。
我有两种方法
- 中介者模式(Bootstrapper 结合了两个 ViewModel 和一个中介者)
- 每个模型使用相同的数据库(模型监听数据库,视图模型监听模型)
但我对这些方法感觉不太好。
我应该在模型之间还是视图模型之间进行通信?或者这是错误的方式?
更新
我非常感谢您的所有回答。在我看来,它们都没有错或对。我认为哪种解决方案适合一个人是一个品味问题。我真的很喜欢 EventAggregator 模式。这是 Karl Shifflett关于在PRISM中实现EventAggregator 模式的精彩视频。但它也解释了模式本身。
@Thomas 在我看来,在一个 ViewModel 中执行此操作是一个糟糕的解决方案。ViewModel 必须分开。基于关注点分离的MVVM 。