windows phone 页面导航(6)

简介:

页面导航的例子我们使用的是两个页面,从第一个页面(MainPage)导航到第二个页面(SecondPage),然后可以从第二个页面导航到第一个页面 ,使用的os 7.1;

页面导航没有引入新的命名空间使用的到属性是派生于PhoneApplicationPage类;

  MainPage.xaml 文件中用到的代码为: 

 <Grid x:Name= " ContentPanel " Grid.Row= " 1 " Margin= " 12,0,12,0 "></Grid>
        <TextBlock x:Name= " Navigation " Text= " 导航到第二个页面 " Grid.Row= " 1 " VerticalAlignment= " Center " HorizontalAlignment= " Center " ManipulationStarted= " Navigation_ManipulationStarted "></TextBlock>
    </Grid>

   隐藏文件代码为:

View Code
// textblock的导航时间
         private  void Navigation_ManipulationStarted( object sender, ManipulationStartedEventArgs e)
        {
             // 为什么一定是相对的--知识点①
             this.NavigationService.Navigate( new Uri( " /SecondPage.xaml ", UriKind.Relative));

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

         protected  override  void OnManipulationStarted(ManipulationStartedEventArgs e)
        {
             // 知识点②
            SolidColorBrush scb= new SolidColorBrush ();
             // 知识点③
            Color color =  new Color();
            color.A = ( byte) 245;
            color.R = ( byte) 135;
            color.G = ( byte) 25;
            color.B = ( byte) 15;
            scb.Color = color;

            ContentPanel.Background = scb;
             base.OnManipulationStarted(e);
        }

 隐藏文件的代码是在默认代码的基础上加上以上两个方法,实现的效果是当点击(触摸)非名为Navigation的TextBlock元素时,ContenPanel就会改变为设置好的固定颜色,MainPage效果图:

 

  知识点①:this.NavigationService.Navigate() 是页面导航的核心方法参数是URI类型的对象,所以要New该类,并且实例化URI的时候SecondPage.xaml前有斜线,第二个参数表明     此URI是相对于SecondPage.xaml,绝对的URI是指完整引用某个资源如: http://www.sensengo.com/Index.html  相对URI取决于前面定义的基 URI(例如:/Index.html) 

 

         URI的构造函数有一个包含了基URI和相对URI字符串:

Uri(Uri, String)

根据指定的基 URI 和相对 URI 字符串,初始化 Uri 类的新实例

         实例:

Uri baseUri =  new Uri( " http://www.contoso.com ");
      Uri myUri =  new Uri(baseUri,  " catalog/shownew.htm ");

 

 

         所以URI实例构成了绝对URI,myUri.ToString()字符串是为:http://www.contoso.com/catalog/shownew.htm

   知识点②:SolidColorBrush类是绘制纯色区域,SolidColorBrush的另一种构造方法为: SolidColorBrush(Color),所以以上代码也可以这样实现:   
ContenPane.Backgroud= new solidColorBrush(

    Color.FromArgb(245,(byte)135,(byte)25,(byte)15));

 

            


   知识点③Color这里就是SolidColorBrush的属性color设置颜色,color类描绘的就是一个ARGB颜色,在形成图像中的 每个像素的颜色表示为一个 32 位数:分别用 8 位表示 Alpha、红色、绿色和蓝色 (ARGB)。  这四个分量的值都是 0 到 255,其中 0 表示没有亮度,255 表示最大亮度。  alpha 分量指定颜色的透明度:0 表示完全透明,255 表示完全不透明。  要确定颜色的 alpha、红色、绿色或蓝色成分

 

   SecondPage.xaml 文件主要代码:

 <Grid x:Name= " ContentPanel " Grid.Row= " 1 " Margin= " 12,0,12,0 "></Grid>
        <TextBlock x:Name= " Navigation " Text= " 导航到第-个页面 " Grid.Row= " 1 " VerticalAlignment= " Center " HorizontalAlignment= " Center " ManipulationStarted= " Navigation_ManipulationStarted "></TextBlock>
    </Grid>

   

   隐藏文件添加的两个方法代码:

View Code
  // textblock的导航时间
         private  void Navigation_ManipulationStarted( object sender, ManipulationStartedEventArgs e)
        {
             // 两个方式实现的效果一样,但是原理不同--知识点④
             this.NavigationService.Navigate( new Uri( " /MainPage.xaml ", UriKind.Relative));
             // this.NavigationService.GoBack();
            e.Complete();
            e.Handled =  true;
        }

         protected  override  void OnManipulationStarted(ManipulationStartedEventArgs e)
        {
             // 纯色
            SolidColorBrush scb =  new SolidColorBrush();
             // alpha
            Color color =  new Color();
            color.A = ( byte) 255;
            color.R = ( byte) 145;
            color.G = ( byte) 35;
            color.B = ( byte) 15;
            scb.Color = color;

            ContentPanel.Background = scb;
             base.OnManipulationStarted(e);
        }

 知识点④:在这里因为只有两个页面,返回到上一个页面的效果一样,但是原理不同,this.NavigationService.Navigate是实现一个新的URI实例,this.NavigationService.GoBack()则是后退到历史记录中的最新页面,如果没有历史记录页面则退出程序;

 

 知识点⑤ : 墓碑化:因为windows phone手机不支持第三方程序后台,所以提供了另一种方法Tomstone,简单的讲就是在程序A还在运行的情况下,突然其他程序B,此时系统会暂时关 闭程序A的线程,并暂存其状态;当程序B使用完毕,程序A线程会重新启动,恢复程序A之前的状态;本节的页面导航就是墓碑化的例子

   

小结

:导航的核心一句话就是:this.NavigationService.Navigate()和返回上一个页面

this.NavigationService.GoBack()

,简单了解墓碑化



本文转自shenzhoulong  51CTO博客,原文链接:http://blog.51cto.com/shenzhoulong/831462,如需转载请自行联系原作者

相关文章
|
3月前
|
Java 应用服务中间件 Windows
【Azure 应用服务】App Service for Windows 环境中为Tomcat自定义4xx/5xx页面
【Azure 应用服务】App Service for Windows 环境中为Tomcat自定义4xx/5xx页面
|
4月前
|
Windows
【Windows】 Win10下报错:该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装应用,请在“默认应用设置”页面中创建关联
【Windows】 Win10下报错:该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装应用,请在“默认应用设置”页面中创建关联
543 1
|
12月前
|
消息中间件 数据安全/隐私保护 Windows
windows下RabbitMQ安装后,无法进入web管理页面问题
windows下RabbitMQ安装后,无法进入web管理页面问题
867 1
|
6月前
|
Web App开发 Windows
Windows【Chrome浏览器 01】首次安装的谷歌Chrome浏览器出现无法打开此页面问题处理(详细图文步骤)
Windows【Chrome浏览器 01】首次安装的谷歌Chrome浏览器出现无法打开此页面问题处理(详细图文步骤)
134 0
|
12月前
|
消息中间件 数据安全/隐私保护 Windows
windows下RabbitMQ安装后,无法进入web管理页面问题
windows下RabbitMQ安装后,无法进入web管理页面问题
212 0
|
Android开发 iOS开发 Windows
Windows Phone 寿终正寝了,这些经典机型你还记得吗?
不久前,随着最后一家WP手机厂商惠普宣布取消今后Windows Phone的研发计划,以及微软官方声明对WP8.1系统今后所有升级维护的终止,WP手机,作为曾经和安卓手机、苹果手机并驾齐驱的三大智能手机之一,正式寿终正寝。
1473 0
Windows Phone 寿终正寝了,这些经典机型你还记得吗?
|
XML 开发框架 前端开发
Windows Phone快速入门需掌握哪些能力
在此之前,先普及下Windows Phone的概念和开发工具的介绍。 Windows Phone是微软公司开发的手机操作系统,它将微软旗下的Xbox Live游戏、Xbox Music音乐与独特的视频体验集成至手机中。2012年6月21日,微软正式发布Windows Phone 8,采用和Windows 8相同的Windows NT内核,同时也针对市场的Windows Phone 7.5发布Windows Phone 7.8。
172 0
Windows Phone快速入门需掌握哪些能力
|
移动开发 Android开发 开发者
Windows Phone 8.1 新功能汇总 开发者预览版开放下载
在Build 2014大会上,微软正式发布了传闻已久的Windows Phone 8.1系统,所有的Windows Phone 8手机都可以升级,微软这次可谓是十分厚道。虽然并非迭代升级,但WP 8.1还是拥有很多重大更新,对于微软进一步完善移动平台拥有积极的意义。下面,就一起来了解一下WP 8.1的主要新特性。
265 0
Windows Phone 8.1 新功能汇总 开发者预览版开放下载
|
编解码 前端开发 JavaScript
Windows Phone 下开发 LBS 应用
基于位置的服务(Location Based Service,LBS),它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在GIS(Geographic Information System,地理信息系统)平台的支持下,为用户提供相应服务的一种增值业务。
202 0