我正在使用 Prism 4 和 Unity 制作概念验证 WPF 应用程序,但遇到了一些基本问题。
在我们的解决方案中,我们有以下项目:
-AppName.Desktop
-AppName.Modules.ModuleA
-AppName.Modules.ModuleB
在学习了一些教程,探索了一些示例并搜索了互联网之后,我无法找到一个非常初级问题的合适答案;如何在不同 DLL 中的两个视图之间切换。
在 ModuleA 的 Initialize 方法中加载第一个视图(ModuleAView):
public void Initialize()
{
regionManager.RegisterViewWithRegion("MainRegion", typeof(Views.ModuleAView));
}
当我单击 ModuleAView(或 ModuleAView 中的按钮)时,我想切换到 ModuleBView。
public bool SomeEventInModuleAView(SomeEventParams e)
{
Uri viewNav = new Uri("ModuleBView", UriKind.Absolute);
regionManager.RequestNavigate(RegionNames.MainRegion, viewNav);
}
显然这是行不通的,因为 ModuleA 不知道在哪里可以找到 ModuleBView。我已阅读有关使用 pack/application/component 等更改 URI 的信息,但我似乎无法使其工作。
我在想这样的事情:
Uri("pack://application:,,,/AppName.Modules.ModuleB;component/Views/ModuleBView.xaml", UriKind.Absolute);
由于从不同的程序集加载模块是 Prism 的目的之一,我认为奇怪的是,在 Prism 下载中没有任何示例来说明它是如何工作的。