C# Windows8导航中的困惑
我对Windows8中从一个页面导航到另一个页面的两种方式感到困惑 第一个: 使用最初在App.Xaml.cs类中定义的框架,如下所示C# Windows8导航中的困惑,c#,windows-8,navigation,microsoft-metro,C#,Windows 8,Navigation,Microsoft Metro,我对Windows8中从一个页面导航到另一个页面的两种方式感到困惑 第一个: 使用最初在App.Xaml.cs类中定义的框架,如下所示 public static Frame RootFrame; protected override void OnLaunched(LaunchActivatedEventArgs args) { RootFrame = Window.Current.Content as Frame; } 像..一样浏览它 App.RootFrame.N
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
为空,它将弹出一个Frame
,并将其设置为Window.Current.Context
)
从那时起,您将使用同一帧
对象的导航功能。当您导航到Page1
时,Frame
将Page1.Frame
属性设置为自身,因此在Page1
中,this.Frame
指向与App.RootFrame
相同的对象(本质上是一个“父”链接)
因此,Window.Current.Content
承载一个Frame
对象,该对象承载Page
s。每个页面
都有一个指向该框架
的指针,他们可以使用该指针命令该框架
导航到其他页面
s
请注意,Window.Current.Content
本身是一个可设置的ui元素
。这意味着它可以在技术上承载除框架之外的UI。这可以用来(例如)制作一些chrome,它本身承载了一个框架
,这是你的应用程序的实际内容(就像以前的HTML iFrame)。我在一个案例中这样做是为了创建一个开发人员控制台,该控制台可以从我的应用程序的每个页面轻松调用/使用(因为它存在于承载各个页面的框架级别之上)