Wpf Prism MVVM在模块之间发生变化



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

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

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

提前谢谢。

模块可以根据需要加载。在第一个模块中按下完成按钮后,加载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上找到更多信息。希望能有所帮助。

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

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

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

希望这有意义!

最新更新