【问题标题】:Wpf Prism MVVM change between modules模块之间的 Wpf Prism MVVM 更改
【发布时间】:2012-07-17 00:47:08
【问题描述】:

我正在使用 Prism 和 MVVM 开发一个 WPF 项目,我是使用这些工具的新手。 我一直在创建模块并对其进行测试,一切正常。为了在 Bootstrapper 中测试它,我使用 ModuleCatalog 的 AddModule 方法添加每个模块,但现在我需要将所有模块放在一起并从一个模块转到另一个模块。

程序启动并加载Module_1,当用户完成此模块中的所有操作时,按下完成按钮,程序显示Module_2,依此类推...

在用户操作后我需要做什么才能从一个模块更改为另一个模块?

提前谢谢你。

【问题讨论】:

    标签: c# wpf mvvm prism


    【解决方案1】:

    模块可以按需加载。在第一个模块加载 Module_2 中按下完成按钮后。 How to: Load Modules on Demand。 在模块的Initialize() 方法中,您可以将所需的视图注册到区域,例如

    public void Initialize()
    {
        regionManager.RegisterViewWithRegion("MainRegion", () => container.Resolve<Module2View>());
    }
    

    加载模块完成后导航到这个视图:

    moduleManager.LoadModuleCompleted += (s, e) =>
        {
            if (e.ModuleInfo.ModuleName == "Module_2")
            {
                regionManager.RequestNavigate("MainRegion", new Uri("Module2View", UriKind.Relative));
            }
        };
    

    这只是一个简单的示例。您可以在MSDN 上找到更多信息。希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      另一种选择可能是使用 Prism 提供的 EventAggregator 类

      当用户单击完成按钮时,将引发 CompositePresentationEvent。 Module_1 和 Module_2 可能已经订阅了这个事件(可能在他们的模块 Initialize 方法中)并且 module_1 可以隐藏自己,而 module_2 显示自己。

      视图显示/隐藏的实际实现将取决于您如何使用区域 - Zabavsky 的回答解决了这个问题。

      希望这是有道理的!

      【讨论】:

        猜你喜欢
        • 2011-04-16
        • 2012-07-29
        • 2019-05-14
        • 2018-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多