我需要在Code后面创建一个页面,然后导航主页面到Windows Store应用程序中的创建页面
我尝试了这个,但它没有工作黑色页面导航
Page p1 = new Page();
p1.Content = pdfViewer1;
this.Frame.Navigate(typeof(Page),p1);
答案 0 :(得分:1)
导航到完全使用代码创建的页面非常棘手。我甚至不确定它是否可行(至少没有一些复杂的黑客攻击)这是因为Visual Studio在场景后面构建了一些类以确保导航特别是类" XamlTypeInfoProvider"用于标识可以导航的页面。
据我所知,导航到代码背后创建的页面的最简单方法是创建一个" normal"空白页面,然后填写此空白页面,其中包含在代码后面创建的内容。
// create the page content in code: here it is in the variable pdfviewer
this.Frame.Navigate(typeof(BlankPage1),pdfViewer);
并在"空白页面内#34;使用OnNavigatedTo事件将创建的页面内容放在屏幕上
public sealed partial class BlankPage1 : Page
{
public BlankPage1()
{
this.InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
(this.Content as Grid).Children.Add( e.Parameter as UIElement);
base.OnNavigatedTo(e);
}
}
答案 1 :(得分:0)
您需要确保使用正确的Frame对象。根据您提供的内容,您似乎需要使用“根”框架,就像在您的应用程序的OnLaunched覆盖中加载主窗口时所做的那样。
以下是从主页启动辅助页面的示例。
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
Loaded += MainPage_Loaded;
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
rootFrame.Navigate(typeof(SecondaryPage));
}
}
请注意,传递给Navigate的是Page对象的类型,而不是它的实例。导航将创建一个实例并导航到它。然后,新页面的Loaded处理程序可以连接任何其他内容,例如代码中显示的PDF查看器。如有必要,可以使用其他Navigate重载之一将参数传递给辅助页面。