【问题标题】:MVVM communication with ObjectsMVVM 与对象的通信
【发布时间】:2012-06-24 11:07:18
【问题描述】:

我目前正在尝试使用 Prism 创建一个应用程序,但我在模块之间的通信方面遇到了一些问题。

我有一个状态模块,它基本上显示状态消息,但也可以向用户显示一些工作正在进行中(不确定),显示不同的图标,显示/隐藏控件等等。

为此,通常我会使用具有所有这些属性的状态对象并将其用作参数,但因为在 prism 中建议使用强耦合,所以我不知道该怎么做。

为每个属性创建 4-5 个事件可能是不好的做法,.. 我还考虑在事件和资源所在的“交互”模块中创建一个接口。

你们会推荐什么?

【问题讨论】:

  • 您可以使用事件聚合器在模块之间进行通信
  • 是的,但 eventtaggregator 只支持基本类型,对吗?所以我必须为我拥有的每个属性(显示、自动隐藏、消息...)创建一个事件
  • 您可以使用事件聚合器公开状态对象
  • 是的,但这意味着我需要在“交互”或“状态”DLL 中的“状态”类,对吗?一个接口是不够的,因为试图设置状态的模块必须实例化一个要发布的类。目前我正在创建一个 IStatus 对象作为 StatusRegion 的上下文并订阅 notifypropertychanged 事件的
  • 也许你会对我关于Simplifying Prism's EventAggregator的博文感兴趣?

标签: c# .net wpf mvvm prism


【解决方案1】:

许多状态事件可能确实不是最好的解决方案;但是,如果有一个或两个经常使用(例如在状态栏中显示状态消息),为了方便起见,我无论如何都会将它们公开为事件。

对于其余部分,您可以通过 MEF 或 Unity 公开 StatusModule,或者更确切地说是由 StatusModule 实现的接口 IStatusModule,具体取决于您使用的内容。这样,任何想要显示状态的组件都会导入 IStatusModule 并使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 2017-10-12
    • 2019-05-09
    相关资源
    最近更新 更多