Windows 8导航中的混乱

时间:2014-02-28 11:00:21

标签: c# windows-8 navigation microsoft-metro

我对在Windows 8中从一个页面导航到另一个页面的两种方式感到困惑。

第一个: -

使用最初在App.Xaml.cs类中定义的帧,如下所示。

 public static Frame RootFrame;

 protected override void OnLaunched(LaunchActivatedEventArgs args)
 {
      RootFrame = Window.Current.Content as Frame;
 }

像......一样浏览它。

App.RootFrame.Navigate(typeof(Page1));

第二个: - 这是一种简单的导航方式,如..

this.Frame.Navigate(typeof(page1));

问题: - 这两种类型有什么不同,如果是,请告诉我。

1 个答案:

答案 0 :(得分:2)

这些方法相同,实际上是在同一个对象上运行。您的应用程序对象会创建一个承载页面的Frame对象(在基本应用程序模板中,首次启动应用程序时,请注意,如果rootFrame为空,则会新闻Frame并设置它到Window.Current.Context)。

从那时起,您正在使用相同Frame对象的导航功能。当您导航到Page1时,Frame会将Page1.Frame属性设置为自己,因此在Page1中,this.Frame指向与{{1}相同的对象(基本上是“父”链接)。

因此,App.RootFrame托管Window.Current.Content个对象,该对象托管Frame个。每个Page都有一个指向Page的指针,可以用它来命令Frame导航到其他Frame

请注意,Page本身是一个SETTABLE Window.Current.Content。这意味着它可以在技术上托管除UiElement之外的UI。这可以用于(例如)制作一些本身托管Frame的Chrome,这是您应用的实际内容(如旧版的HTML iFrame)。我在一个案例中做了这个,以便创建一个开发人员控制台,可以从我的应用程序的每个页面轻松调用/使用(因为它存在于托管各个页面的框架的水平之上)。