Wpf Prism MVVM 如何在模块之间进行切换

3
我正在使用Prism和MVVM开发WPF项目,对这些工具还不太熟悉。我已经创建了模块并进行了测试,一切都运行良好。为了在Bootstrapper中对其进行测试,我使用ModuleCatalog的AddModule方法添加了每个模块,但现在我需要将所有模块组合在一起,并从一个模块转到另一个模块。
程序启动并加载Module_1,当用户完成此模块中的所有操作后,按下完成按钮,程序会显示Module_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上找到更多信息。希望能对您有所帮助。


0

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

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

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

希望这有意义!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接