c# - MVVM 交替事件模式

标签 c# wpf events mvvm

我目前有一个看起来像这样的层次结构

MainWindowViewModel
    TabViewModel
        EditorViewModel
            ReviewingServices
                ConflictFinder

我遇到的问题是 TabViewModel希望收到冲突通知(来自 ReviewingServices)以及其他事情。我可以为我的所有依赖项创建公共(public) getter,并使用 DependencyA.DependencyB.DependencyC += SomeHandler; 订阅我想要的任何内容但这很困惑。我发现自己创造了太多我想计算的事件。从本质上讲,我创建了一个困惑的事件网络。我喜欢我为每个类(class)创建的职责分离,但是当每个类(class)都有 2-3 个事件时,维护起来相当困难。如果订阅者仅高于 1 级,我在创建和维护事件时没有问题。当说MainWindowViewModel时,困惑就来了希望收到新评论的通知(从 ReviewingServies 发布。

在订阅者可能想要订阅深深嵌套在应用程序中的事件的情况下,执行这些类型的事件是否有更好的方法?

最佳答案

我不知道我是否真的遇到了你的麻烦,但我建议看看某种事件聚合器。尝试查看Caliburn one ,但自己实现一个并没有太大的不同。有了这个,您可以使用类型命名事件并从任何地方订阅它。

关于c# - MVVM 交替事件模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7029150/

相关文章:

c# - 构建包后通过 URL 在 Win8 商店应用程序中打开文件

c# - C#中的委托(delegate)问题

c# - 如何在多线程应用程序中正确卸载AppDomain?

wpf - 通过 WPF View 模型更改源在框架中导航

c# - 哪个更好地拥有带有私有(private) setter 的自动实现的属性或私有(private)字段和属性只是 getter?

c# - ItemTemplate 中的 WPF 绑定(bind)有效但会产生错误消息

wpf - 使用 MVVM 和 WPF 创建导航的最佳架构

C# Tabcontrol 捕获 mousedown 事件

wpf - 如何在 MyButton.Click 事件之前执行 MyButton.Command.Open?

docker - 在 kubernetes 中创建或删除 pod 时触发事件以在某些数据库中写入或删除其 IP