zoukankan      html  css  js  c++  java
  • Windows 8 应用的页面导航(3)

    缓存页面

    当运行最后一个例子时,可能会注意到如果点击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不会自动提供导航控件,因此,如果需要执行顶层导航到一个新的页面,就无法返回到第一个页面,除非创建了一个链接或者其他的导航机制,方可以返回到原先页面。起始页的地方就是定义应用程序如何管理其生命周期的位置,确定当它开始时、关闭时、暂挂时,有什么动作。如果有多个顶层页面,每一个页面必须包含管理应用程序生命周期和状态的逻辑值。

  • 相关阅读:
    移动H5页面微信支付踩坑之旅(微信支付、单页面路由模拟、按钮加锁、轮询等常见功能)
    EDM模板编写踩坑指南(持续更新中)
    7天内我面试了10家公司,如何从命中率0%到命中率至70%?
    codewars.DNA题目几种解法分析(字符串替换)
    webpack+react搭建环境
    手机端访问网页 js根据浏览器区别转入手机端网址的URL
    树状数组————(神奇的区间操作)蒟蒻都可以看懂,因为博主就是个蒟蒻
    DFS————从普及到IOI(暴力骗分小能手)
    Manacher(马拉车)————O(n)回文子串
    离散化————实现梦想的算法
  • 原文地址:https://www.cnblogs.com/finehappy/p/2858211.html
Copyright © 2011-2022 走看看