windows phone 页面导航(6)

原文: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(),简单了解墓碑化;发现一个方  法也可以导航到其他页面如下:

  Uri uri = new Uri("/SecondPage.xaml", UriKind.Relative);
            this.NavigationService.Source = uri;

 

 

时间: 2024-09-20 11:52:21

windows phone 页面导航(6)的相关文章

Windows Phone 8.1新特性之页面导航

本篇介绍一下Windows Phone 8.1 中页面导航的实现方式. 大家对Windows Phone 8 中页面导航的实现一定不陌生,我们使用 NavigationService 来实现.具体写法是这样的: NavigationService.Navigate(new Uri("XAML相对路径", UriKind.RelativeOrAbsolute)); 而在导航目标页,我们在 OnNavigatedTo 方法中通过 NavigationContext.QueryString[

与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏

原文:与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏 [索引页][源码下载] 与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏 作者:webabcd 介绍与众不同 windows phone 7.5 (sdk 7.1) 之特性 搜索的可扩展性 程序的生命周期和页面的生命周期 页面导航 系统状态

Caliburn Micro 框架中Windows Phone 8使用研究(二)页面导航

背景 对于MVVM 架构的WP程序,一个很关键的问题就是导航,以及导航传参.有过经验的人很清楚WP导航只能在View中进行,并且导航参数也只能在NavigatedTo等View的事件中获取,如此我们便不得不在xaml.cs文件中加上处理,以获取导航参数然后再通过导航参数构造ViewModel.这个过程很痛苦,因为我们不得不再两个文件中来回切换来看我们的逻辑代码. 那么接下来我们看下CM作者的厉害之处(必须承认,真的很厉害), 让我们看下CM框架中导航是什么样子的: 不带参数的情况下: 在View

windows phone 页面传值(7)

原文:windows phone 页面传值(7) 在windows phone 中微软为我们提供了页面间传递参数的解决方案,下面就为大家介绍使用方法,页面传值的案例中我们建立两个页面,一个是MainPage另一个是SecondPage页面:MianPage页面的主要代码为:      <Grid x:Name="ContentPanel" Grid.Row="1" Background="Goldenrod" Margin="12

网页导航设计:网页页面导航设计原则

文章描述:设计师的创意是无限的,但是用户的导航需求是固定的,任何样式,只要能够符合导航原则的几点要求,就可以完成用户的导航任务.更加简便的方法就是只要能在页面元素中找到这个页面的页面路径,就相当于满足了导航原则.这样的原则和方法既可以用来检验我们的设计是否达标 著名的格林童话故事里面汉赛尔和格莱特知道后母想要在深林里面丢掉他们的计划,将面包屑撒在来时的路上,虽然当月亮升起时,面包屑被鸟吃掉了,但是现在的互联网设计师们从这个故事中找到了灵感,设计出不会被鸟吃掉的固定"面包屑". 图1:互

asp.net 2.0中使用sitemapDATAsource做页面导航

asp.net|sitemap|页面 在ASP.NET 2.0中,没有专门的页面导航控件,但可以使用SITEMAPdatasource配和DATALIST来实现.SITEMAPDATASOURCE控件中,需要特别的建立一个web.sitemap的XML文件,该文件中存贮网站的结构,比如<?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microso

ASP.NET四种页面导航方式之比较与选择

asp.net|比较|页面 在ASP.NET应用中,Web表单之间的导航有多种方式:用超级链接,用Response.Redirect,用Server.Transfer,或者用Server.Execute.本文将分析这四种导航方式的异同及其优缺点,帮助你选择最佳的导航方式. 一.超级链接 从一个表单进入另一个表单最简单的方式是使用HTML超级链接控件.在Web表单中,使用超级链接的HTML代码类如: <a href="WebForm2.aspx">进入表单2</a>

Asp.net 页面导航的几种方法与比较

asp.net|比较|页面 在ASP.NET应用中,Web表单之间的导航有多种方式:用超级链接,用Response.Redirect,用Server.Transfer,或者用Server.Execute.本文将分析这四种导航方式的异同及其优缺点,帮助你选择最佳的导航方式. 一.超级链接 从一个表单进入另一个表单最简单的方式是使用HTML超级链接控件.在Web表单中,使用超级链接的HTML代码类如: <a href="WebForm2.aspx">进入表单2</a>

ASP.NET四种页面导航方式的比较与选择

asp.net|比较|页面 ASP.NET应用中,Web表单之间的导航有多种方式:用超级链接,用Response.Redirect,用Server.Transfer,或者用Server.Execute.本文将分析这四种导航方式的异同及其优缺点,帮助你选择最佳的导航方式. 一.超级链接 从一个表单进入另一个表单最简单的方式是使用HTML超级链接控件.在Web表单中,使用超级链接的HTML代码类如: <a href="WebForm2.aspx">进入表单2</a>