4

我正在使用 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 下载中没有任何示例来说明它是如何工作的。

4

1 回答 1

3

我找到了答案。我完全忘了注册第二个视图。

在此处查看解决方案:http: //compositewpf.codeplex.com/discussions/402860#post940396

于 2012-11-13T07:16:18.570 回答