缓存页面

当运行最后一个例子时,可能会注意到如果点击Page2 的Back按钮,Page1的TextBox控件的值是空的。假设用户浏览过Page2 的结果之后,想返回页面并改变之前页面的值,如果Page1有很多字段要填写,当应用程序返回到Page1 界面时,用户不喜欢看到所有的字段都是空的。可以指定一个页面通过使用NavigationCacheMode属性作为缓存页面,在BasicPage1页面设计时,将NavigationCacheMode设定为可用。

public BasicPage1()

{

this.InitializeComponent();

this.NavigationCacheMode =

Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;

}

现在运行应程序,从Page2导航返回到Page1时,会发现Page1 的TextBox里面的值会保持原先的值不变。

11.2外部页面

这一部分将会介绍如何连接外部页面并且在Metro风格的应用程序中显示外部页面。

11.2.1创建外部链接

使用HyperlinkButton控件为应用程序添加链接,然后调用HyperlinkButton事件的LaunchUriAsync方法。

1)为应用程序添加HyperlinkButton控件

q 在Visual Studio 11中将HyperlinkButton控件拖拽到设计页面中。改变Content 属性值以便于搜索web页面,并且为Click事件添加一个时间处理器。

q 将下面的代码添加到应用程序的XAML 文件中

<HyperlinkButton Content="Search the web" Click="HyperlinkButton_Click_1"/>

2)HyperlinkButton的Click事件处理器通过Uri调用LaunchUriAsyc方法,这个Uri来自需要链接的网页。整个Click事件处理程序应该与下面的代码相似。

 

private async void HyperlinkButton_Click_1(object sender, RoutedEventArgs e)

{

Uri uri = new Uri(@"http://www.bing.com");

bool success = await Windows.System.Launcher.LaunchUriAsync(uri);

}

 

注意:不要忘记把async 关键字放在click事件处理器的声明里面

前面的步骤介绍了如何为应用程序创建一个链接,当用户单击这个链接时可以打开浏览器并导航到特定的网页中。其实没有必要使用HyperlinkButton调用LaunchUriAsyc方法,可以在代码的任何位置调用LaunchUriAsyc方法。同样的,HyperlinkButton的Click事件处理器除了在浏览器中打开页面之外也可以执行其他操作。但是如果要同时使用这两个的话,创建的页面链接必须要拥有相同外观和行为。

11.2.2显示链接页面

Metro风格应用程序可以在WebView控件中显示外部网页,但是不可以从顶级页面访问外部页面。下面介绍如何在应用程序中显示一个页面。

1)通过使用Visual Studio 11 的XAML设计页面或者直接在XAML中为应用程序添加一个WebView控件。

2)为WebView控件重命名,例如:webView1

3)将下面的代码添加到隐藏的应用程序文件代码中。可以由用户自己决定代码的添加位置,这取决于用户何时想要显示网页。例如:可以将代码添加到OnNavigatedTo方法中,这样当应用程序加载时,网页就会自动显示;或者可以将代码添加到一个Click事件中,这样可以在用户单击按钮时加载网页。

Uri targetUri = new Uri(@"http://www.bing.com");

webView1.Navigate(targetUri);

11.3使用单页导航

这一部分将会介绍单页导航模板,并且介绍如何通过Page 控件和WinJS.Navigation功能,使用单页导航模板。

11.3.1 创建基本链接

最简单的同时也是最常用的一种导航类型就是超链接,下面的代码创建了一个可以导航到Page2.html的超链接。

<p><a href="page2.html">Go to page 2</a></p>

上面创建的链接是相对链接,系统认为Page2.html是本地页面,并且认为其实应用程序的一部分。单击这个链接可以浏览到page2.html。如果想要为应用程序的当地文件明确指定完整的URL,必须使用ms-appx URL 方案:ms-appx://package name/file path,可以省略文件包的名称:ms-appx:///file path。

<p><a href="ms-appx:///page2.html">Go to page 2</a></p>

可以使用新的ms-appx方案指定任何包含在应用程序包中的文件

11.3.2导航的方式

前面的例子展示了如何创建一个可以作为顶层导航的链接,这个链接对于网页来说是可以的,但是不可以在使用Javascript的Metro 风格的应用程序中作为顶层导航链接。

使用单页面导航会有更好的性能,并且能够获得更多的app-like经验。Metro风格的应用程序使用的Javascript不会自动提供导航控件,因此,如果需要执行顶层导航到一个新的页面,就无法返回到第一个页面,除非创建了一个链接或者其他的导航机制,方可以返回到原先页面。起始页的地方就是定义应用程序如何管理其生命周期的位置,确定当它开始时、关闭时、暂挂时,有什么动作。如果有多个顶层页面,每一个页面必须包含管理应用程序生命周期和状态的逻辑值。

posted on 2013-01-13 09:28  冯瑞涛  阅读(354)  评论(0编辑  收藏  举报