我对在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));
问题: - 这两种类型有什么不同,如果是,请告诉我。
答案 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)。我在一个案例中做了这个,以便创建一个开发人员控制台,可以从我的应用程序的每个页面轻松调用/使用(因为它存在于托管各个页面的框架的水平之上)。