我正在用Prism 4和Unity制作概念WPF应用程序,但我遇到了一些基本问题。
在我们的解决方案中,我们有以下项目:
-AppName.Desktop
-AppName.Modules.ModuleA
-AppName.Modules.ModuleB
通过一些教程,探索了一些例子并搜索了互联网,我无法找到一个非常基本的问题的合适答案;如何在不同的DLL&#39> 中切换两个视图。
第一个视图(ModuleAView)在ModuleA的Initialize方法中加载:
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下载中没有任何示例来说明它是如何工作的,这很奇怪。
答案 0 :(得分:3)
我找到了答案。我完全忘了注册第二个视图。
点击此处查看解决方案:http://compositewpf.codeplex.com/discussions/402860#post940396