Xaml 在不同的.dll中导航到一个页面

Xaml 在不同的.dll中导航到一个页面,xaml,windows-10,uwp,Xaml,Windows 10,Uwp,我在项目a中有一个页面类。我想从我的通用windows项目(比如项目B)页面导航到此页面。在UWP中,我试图使用Frame.Navigate(typeof(Page_classA))实现这一点,因为NavigationService.Navigate(new Uri())在UWP中已经过时 但在这种情况下,我得到了一个Windows.UI.Xaml.Markup.XamlParseException。 UWP或metro应用程序中是否有其他方法可以导航到不同程序集中的页面?我们可以使用Frame

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

但在这种情况下,我得到了一个
Windows.UI.Xaml.Markup.XamlParseException

UWP或metro应用程序中是否有其他方法可以导航到不同程序集中的页面?

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

例如,我们可以创建一个名为“ProjectA”的
类库(通用Windows)
,并在此项目中添加一个名为“PageA”的新
页面。然后在此项目的属性页面中,选中构建配置中的生成库布局选项。

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

在此之后,我们可以构建项目,并在“调试”文件夹中获得以下布局:
在ProjectA文件夹中,它包含.xaml文件和.xr.xml文件:

当我们获得库输出文件时,我们可以将它们复制到UniversalWindows项目(ProjectB)中的任何位置,我们只需要添加对“ProjectA.dll”文件的引用。VisualStudio将在构建应用程序时自动拾取这些文件并将其放入appx包中

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

Frame.Navigate(typeof(ProjectA.PageA))

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

那么您的意思是说,每当我们向用户提供库项目.dll时,其pri文件和.xbf文件都必须与之一起提供?@user1917864:是的,如果库项目包含XAML资源,我们需要将这些文件放在.dll旁边,因为在WinRT环境中,资源不再嵌入程序集中。如果要将库发布给其他用户,可以将其打包为NuGet包。