2015-10-01 20 views
1

我正在写C#/ XAML/UWP应用程序,我想知道框架控件的实例(https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.frame)。我不使用缓存,只是标准方案,其中每个导航都会创建请求的特定Page子类的新实例,并处理上一页实例。每个页面实例具有框架构件,和导航到另一个页面通过以下步骤完成:Instancing框架类

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

我可以假设,对于everypage this.Frame是相同的对象为“全局变量” Window.Current.Content?在什么情况下这个假设是不正确的?

+1

我相信你的假设是正确的,它不应该改变,除非你自己手动改变它。 –

+1

Windows.Current.Content甚至不一定是一个Frame。例如,它可以是一个SplitView,SplitView可以保存一个Frame。此外,你甚至可以拥有多个框架,并拥有自己的逻辑和页面。所以,如果你只是使用默认的,开箱即用的设置,它应该是同样的事情。如果不是,你必须小心。 –

+0

看看[Microsoft git samples](https://github.com/Microsoft/Windows-universal-samples)中的Cortana Voice Command示例。它包含一个您感兴趣的NavigationService和[NavigationHelper](https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/CortanaVoiceCommand/cs/AdventureWorks/Common/NavigationHelper.cs) 。 –

回答

2

框架是支持页面导航的内容控件。

页面是一个UserControl,this.Frame指示页面实例包含哪个框架。

您可以将任何UI元素(例如文本块)分配给Windows.Current.Content属性,以使UI元素显示在当前窗口上。

默认情况下,应用程序会将一个rootFrame实例分配给Window.Current.Content。所以它不是一个“全局变量”。

关于帧的缓存,您可以检查文档NavigationCacheMode enumeration

+0

通过说“全局变量”,我的意思是Window.Current.Content在应用程序的整个范围内都可用。 – xcoder37