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应用程序中页面间数据的传递。

  • 相关阅读:
    SVG前戏—让你的View多姿多彩
    分享几个Android很强势的的开源框架
    终于,我还是下决心学Java后台了
    金9银10,分享几个重要的Android面试题
    django-多表操作2
    python基础-文件操作
    django-单表操作
    django-多表操作
    django-模板层基础2
    djano-模板层基础知识
  • 原文地址:https://www.cnblogs.com/mcgrady/p/2346118.html
Copyright © 2011-2022 走看看