Wpf Prism MVVM在模块之间切换

时间:2012-07-18 02:54:57

标签: c# wpf mvvm prism

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

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

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

提前谢谢。

2 个答案:

答案 0 :(得分: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找到更多信息。希望它有所帮助。

答案 1 :(得分:0)

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

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

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

希望有意义!