如何在Code后面创建一个页面并将主页面导航到Windows应用商店应用中创建的页面?

时间:2015-01-14 07:15:27

标签: c# winrt-xaml

我需要在Code后面创建一个页面,然后导航主页面到Windows Store应用程序中的创建页面

我尝试了这个,但它没有工作黑色页面导航

Page p1 = new Page();    
p1.Content = pdfViewer1;   
this.Frame.Navigate(typeof(Page),p1);

2 个答案:

答案 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重载之一将参数传递给辅助页面。