3

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

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

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

先感谢您。

4

2 回答 2

1

模块可以按需加载。在第一个模块加载 Module_2 中按下完成按钮后。如何:按需加载模块。在模块的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上找到更多信息。希望能帮助到你。

于 2012-07-18T05:38:31.620 回答
0

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

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

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

希望这是有道理的!

于 2012-07-18T06:04:08.160 回答