我对Windows8中从一个页面导航到另一个页面的两种方式感到困惑。
第一个:-
使用最初在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));
问题:-这两种类型有什么不同吗?如果有,请告诉我。
它们是相同的方法,实际上是在同一个对象上操作的。您的应用程序对象创建了一个承载页面的Frame
对象(在基本应用程序模板中,当应用程序首次启动时,请注意,如果rootFrame
为null,它会更新一个Frame
并将其设置为Window.Current.Context
)。
从那时起,您将使用相同Frame
对象的导航功能。当导航到Page1
时,Frame
将Page1.Frame
属性设置为自身,因此在Page1
中,this.Frame
指向与App.RootFrame
相同的对象(本质上是"父"链接)。
因此,Window.Current.Content
托管一个Frame
对象,该对象托管Page
s。每个Page
都有一个指向该Frame
的指针,它们可以使用该指针命令该Frame
导航到其他Page
s。
注意,Window.Current.Content
本身是可设置的UiElement
。这意味着从技术上讲,它可以托管除Frame
之外的UI。这可以用来(例如)制作一些chrome,它本身托管了一个Frame
,这是你应用程序的实际内容(就像旧的HTMLiFrames)。在一个案例中,我这样做是为了创建一个开发人员控制台,该控制台可以从我的应用程序的每个页面轻松调用/使用(因为它存在于托管各个页面的框架之上)。