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

    Frame和Page类

    在为应用程序添加更多的函数之前,需要了解添加过的页面如何为应用程序提供导航支持。Frame类主要用来相应导航,或者执行一些类似Navigate, GoBack, 和 GoForward的方法。使用Navigate方法使内容显示在框架中。在先前的例子中App.OnLaunched方法创建一个Frame并将BasicPage1传递给Navigate方法。然后这个方法设定应用程序当前窗口的内容为Frame。应用程序窗口包含Frame,而Frame又包含BasicPage1。

    BasicPage1 是Page类的非直接子类,Page类有一个Frame属性,一个可以获得包含Page的read-only(只读)属性。当HyperlinkButton的Click事件处理器调用Frame.Navigate(typeof(BasicPage2))时,应用程序窗口的Frame会显示BasicPage2的内容。

    11.1.3 页面模板对导航的支持

    当创建导航页面时,使用Basic page 模板,这种或者其他支持导航的模板创建了页面,这页面的右上角提供一个Back按钮,这个按钮只有可用时才可见。这个按钮的IsEnabled属性绑定到Frame.CanGoBack属性上,这就是为什么在第一个页面上看不到Back按钮,而在第二个页面才可以看到。

    Basic Page模板创建的类可以继承LayoutAwarePage类,这个LayoutAwarePage类添加到项目中的Common/LayoutAwarePage.cs文件中,LayoutAwarePage类定义了GoBack 和GoHome方法。Back按钮援引LayoutAwarePage.GoBack方法,而Home按钮调用LayoutAwarePage.GoHome方法。

    下面的Page模板提供相同的导航支持:

    q Basic page

    q Group Detail page

    q Grouped Items page

    q Item Detail page

    q Items page

    q Split page

    11.1.4 页面间传递信息

    前面的应用程序只是在两个页面进行导航,但是通常应用程序会有多个页面,而且页面与页面也需要共享信息,可以将第一个页面的某些信息传递到第二个页面中。

    在BasicPage1.xaml页面中用下面的代码替换之前添加的StackPanel。

    <StackPanel Grid.Row="1"

    Margin="120,0,120,60">

    <TextBlock Text="Enter your name"/>

    <TextBox Width="200" HorizontalAlignment="Left" Name="tb1"/>

    <HyperlinkButton Content="Click to go to page 2" Click="HyperlinkButton_Click_1"/>

    </StackPanel>

    在BasicPage1.xaml.cs中用下面的代码替换HyperlinkButton_Click_1事件处理器。

    private void HyperlinkButton_Click_1(object sender, RoutedEventArgs e)

    {

    this.Frame.Navigate(typeof(BasicPage2), tb1.Text);

    }

    在BasicPage2.xaml.cs中用下面的代码替换空的OnNavigatedTo方法。

    protected override void OnNavigatedTo(NavigationEventArgs e)

    {

    string name = e.Parameter as string;

    if (!string.IsNullOrWhiteSpace(name))

    {

    tb1.Text = "Hello, " + name;

    }

    else

    {

    tb1.Text = "Name is required. Go back and enter a name.";

    }

    }

    运行应用程序,在Text Box属于名称,然后单击链接Click to go to page 2。当BasicPage2页面加载时调用rame.Navigate (typeof(BasicPage2), tb1.Text),在HypelikButten的Click事件中的tb1.Text属性被传递。然后BlankPage2的OnNavigated方法获得NavigationEventArgs.Parameter属性值,进而用来显示一条信息。

  • 相关阅读:
    MFC深入浅出读书笔记第一部分
    给对话框添加背景
    相对路径与绝对路径之比较
    线程同步的四种方式以及串口通信
    DirectShow简单入门程序
    两个对话框之间的通信
    websphere部署war包
    Struts2的基础知识
    iBatis基础知识
    Struts1的基础知识
  • 原文地址:https://www.cnblogs.com/finehappy/p/2858210.html
Copyright © 2011-2022 走看看