zoukankan      html  css  js  c++  java
  • Windows Phone开发之路(15) 基本导航

      一个稍微复杂一点的应用中,可能会用到多个页面,要在这些页面中跳转,就必须用到导航功能。

      下面这个实例实现的功能是:从主页面MainPage导航到页面SecondPage,然后再从SecondPage返回到MainPage页面这样一个基本功能。

      MainPage XAML代码:

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <TextBlock Text="Navigate to Second Page!"
    HorizontalAlignment="Center"
    VerticalAlignment="Center"
    Padding="0,34"
    ManipulationStarted="TextBlock_ManipulationStarted"/>
    </Grid>

      MainPage C#代码:

    public partial class MainPage : PhoneApplicationPage
    {
    // 构造函数
    public MainPage()
    {
    InitializeComponent();
    }

    private void TextBlock_ManipulationStarted(object sender, ManipulationStartedEventArgs e)//处理ManipulationStarted事件
    {
    //todo:当单击TextBlock时跳转到SecondPage页面
    this.NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative));//调用NavigationService类的Navigate()方法实现导航

    e.Complete();//表示不再处理其它Manipulation事件
    e.Handled = true;//标记路由事件已处理,不需要向上传递事件
    }
    }

      

      SecondPage XAML代码:

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <TextBlock Text="Go back to Main Page"
    HorizontalAlignment="Center"
    VerticalAlignment="Center"
    Padding="0,34"
    ManipulationStarted="TextBlock_ManipulationStarted"/>
    </Grid>

      SecondPage C#代码:

    public partial class SecondPage : PhoneApplicationPage
    {
    public SecondPage()
    {
    InitializeComponent();
    }

    private void TextBlock_ManipulationStarted(object sender, ManipulationStartedEventArgs e)//处理ManipulationStarted事件
    {
    //todo:返回到Main Page页面
    this.NavigationService.GoBack();//调用NavigationService类的GoBack()方法返回到前一个页面,等价于下一行代码
    //this.NavigationService.Navigate(new Uri("/MainPage.xaml",UriKind.Relative));//不同的是程序不再回到原来的MainPage实例,而是导航到一个新的MainPage实例

    e.Complete();
    e.Handled = true;
    }
    }

      效果如图:

         
     点击TextBlock导航到SecondPage页面              点击TextBlock返回到MainPage页面

      注意:1,ManipulationStarted事件,是在对UIElement对象(在这里指TextBlock)开始操作时发生。即单击它就立即发生。
         2,NavigationService属性,它是Page类中定义的只读属性,它是NavigationService类型的,而NavigationService类是密封类,我们不能对其进行实例化,而由宿主类型创建它们自己的NavigationService实例,其中NavigationService类中包含了Navigate()方法和GoBack()方法。
         3,注意this.NavigationService.GoBack()和this.NavigationService.Navigate(new Uri("/MainPage.xaml",UriKind.Relative))的区别,虽然它们实现的效果是一样的,但是它们的原理是不一样的。

      下一篇将总结Silverlight应用程序中页面间数据的传递。

  • 相关阅读:
    k8s的快速使用手册
    prometheus
    k8s的存储卷
    nfs共享文件服务搭建
    k8s的基本使用
    Linux shell if [ -n ] 正确使用方法
    CURL使用方法详解
    LINUX下NFS系统的安装配置
    RedHat 6.2 Linux修改yum源免费使用CentOS源
    css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?
  • 原文地址:https://www.cnblogs.com/mcgrady/p/2346118.html
Copyright © 2011-2022 走看看