frame.navigate到不同.dll中的页面

时间:2016-01-19 10:36:46

标签: xaml windows-10 uwp

我在项目A中有一个Page类。我想从我的通用Windows项目(比如项目B)页面导航到这个页面。在UWP中,我尝试使用Frame.Navigate(typeof(Page_classA))实现此目的,因为NavigationService.Navigate(new Uri())在UWP中已过时。

但在这种情况下,我得到Windows.UI.Xaml.Markup.XamlParseException。 UWP或metro应用程序中是否有其他方式可以导航到不同程序集中的页面?

1 个答案:

答案 0 :(得分:2)

我们可以使用Frame.Navigate(TypeName)方法导航到不同程序集中的页面。

例如,我们可以创建一个名为“ProjectA”的Class Library(Universal Windows),并在此项目中添加一个名为“PageA”的新Page。然后在此项目的属性页面中,检查构建配置中的“生成库布局”选项。
enter image description here

在WinRT环境中,资源不再嵌入到程序集中,而是作为内容放在dll旁边。所以我们需要生成库布局,以便我们可以方便地在其他项目中引用dll。

在此之后,我们可以构建项目,我们将在“Debug”文件夹中获得以下布局: enter image description here
在ProjectA文件夹中,它包含.xaml文件和.xr.xml文件: enter image description here

当我们获取库输出文件时,我们可以将它们复制到任何地方并在通用Windows项目(项目B)中,我们只需要添加对“ProjectA.dll”文件的引用。 Visual Studio将自动选择这些文件,并在构建应用程序时将它们放入appx包中。

在项目B中,我们可以使用以下代码导航到PageA

Frame.Navigate(typeof(ProjectA.PageA))

在您的情况下,您得到Windows.UI.Xaml.Markup.XamlParseException,这可能是您添加引用时缺少.pri文件。这是一个similar case。因此,请检查您的库布局,并确保这些资源放在您引用的dll旁边。