原文:windows phone 页面传值(7)

在windows phone 中微软为我们提供了页面间传递参数的解决方案,下面就为大家介绍使用方法,页面传值的案例中我们建立两个页面,一个是MainPage另一个是SecondPage页面;MianPage页面的主要代码为:

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

MainPage 设置好颜色的效果图:

从上面代码可以看出我们为名为ContentPanel的Grid的属性Background设置为一个金麒麟色,当点击名为Navigation的TextBlock元素时,把ContentPanel的Grid的属性Background设置的颜色传递到第二个页面去;Navigation的事件ManipulationStarted 的隐藏代码为:

private void Navigation_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
        {
            //获得颜色ARGB值
            SolidColorBrush scb = (SolidColorBrush)ContentPanel.Background;
            Color c = scb.Color;
            //参数传递格式--知识点①
            Uri uri = new Uri("/SecondPage.xaml?Red="+c.R+"&Green="+c.G+"&Blue="+c.B, UriKind.Relative);
            this.NavigationService.Source = uri;
                       

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

页面需要传递的值设置好之后,会导航到第二个页面SecondPage页面,SecondPage.xaml文件中的主要代码为:

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

SecondPage页面效果:

从上面代码中看一看出我们并没有名为ContentPanel的Grid的属性Background设置颜色值,这里我们会从隐藏文件对其背景颜色进行设置,Navigation的事件ManipulationStarted 的隐藏代码为:

  //textblock的导航时间
        private void Navigation_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
        {
            this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
            e.Complete();
            e.Handled = true;
        }

OnNavigatedTo隐藏文件的方法是:

  //活动页面构造函数之后--知识点②
        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            //以泛型集合的方式获得传递过来数值--知识点③
            IDictionary<string, string> para = this.NavigationContext.QueryString;
            if (para.Count>)
            {
                byte r = Byte.Parse(para["Red"]);
                byte b = Byte.Parse(para["Blue"]);
                byte g = Byte.Parse(para["Green"]);
                ContentPanel.Background=new SolidColorBrush(Color.FromArgb(,r,g,b));
                
            }
           
        }

此方法获得从MainPage也传递类的参数,我们进行解析,根据解析到的结果设置 SecondPage中ContentPanel.Background属性,这也就完成参数的传递了;


这里参数传递的格式是我们要注意的,参数是在相对URI后紧接着是问号(?),之后就是键值对的形式了(key=value),如果参数是多个,则需要用一个&符号隔开

这里需要用到的一个方法,即OnNavigatedTo;官方给出的结识是:当页面变为框架中的活动页面时调用,可以理解为从A页面导航到B页面的时候,此时B页面变为活动页面,这时候调用该方法,此方法是在活动页面构造函数加载完成之后被调用,也就是说构造函数执行完成之后就会立即执行此方法


NavigationContext类是获取导航的状态,唯一的一个属性QueryString是获取查询字符串值的集合。在返回的集合类型中根据Key获得Value的值

记住:参数传递的格式多个参数传递需要用&符号隔开;活动页面接受参数时重写的 OnNavigatedTo方法;this.NavigationContext.QueryString接受所有传递到此页面的参数及其值,返回一个字典容器

windows phone 页面传值(7)的更多相关文章

  1. ASP.Net页面传值比较

    ASP.Net页面传值比较   作为一个ASP.Net程序员,尤其是搞B/S开发的,对于不同页面之间变量值的传递用的非常广泛,而掌握不同方式之间的区别和特点也就很有必要.本文将针对这一知识点做一个简单 ...

  2. ASP.NET MVC 5 Web编程5 -- 页面传值的方式

    本篇文章将讲述MVC的页面传值方式,具体包括:后端向前端传值(Controller向View传值):前端向后端传值(View向Controller传值):Action与Action之间的传值. 回顾 ...

  3. WebForm 页面传值

    一.使用Querystring Querystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象.如果你想传递一个安全性不是那么太重要或者是 ...

  4. Spring 向页面传值以及接受页面传过来的参数的方式

    来源于:http://www.cnblogs.com/liuhongfeng/p/4802013.html 一.从页面接收参数 Spring MVC接收请求提交的参数值的几种方法: 使用HttpSer ...

  5. ASP.NET页面传值不使用QueryString

    ASP.NET页面传值不使用QueryString   Asp.net中的页面传值方法: 1         Url传值 特点:主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址 ...

  6. artdialog4.1.7 中父页面给子页面传值

    artdialog4.1.7中父页面给子页面传值时看了一些网友的解决方法: 在父页面声明全局变量 var returnValue=“ ”,子页面用art.dialog.opener.returnVal ...

  7. webform页面传值和删除修改

    一.webform跨页面传值1.内置对象地址栏数据拼接 QueryString 优点:简单好用:速度快:不消耗服务器内存. 缺点:只能传字符串:保密性差(调转页面后在地址栏显示):长度有限.响应请求对 ...

  8. Spring-MVC接收request参数和向页面传值总结

    接收请求参数值,三种方式: 1使用HttpServletRequest获取 2使用@RequestParam注解 3使用自动封装机制封装成bean对象 向页面传值 1直接使用HttpServletRe ...

  9. iOS页面传值方式

    普遍传值方式如下: 1.委托delegate方式: 2.通知notification方式: 3.block方式: 4.UserDefault或者文件方式: 5.单例模式方式: 6.通过设置属性,实现页 ...

随机推荐

  1. VC/MFC 使edit控件不能进行粘贴操作

    这里使用消息拦截的方法 BOOL PersonDlg::PreTranslateMessage(MSG* pMsg) { if (GetDlgItem(IDC_EDIT_USER_ID)->m_ ...

  2. 与众不同 windows phone (5) - Chooser(选择器)

    原文:与众不同 windows phone (5) - Chooser(选择器) [索引页][源码下载] 与众不同 windows phone (5) - Chooser(选择器) 作者:webabc ...

  3. Microsoft2013校园招聘笔试题及解答

    继续求拍砖!!!! 1. You are managing the database of a book publichser, you currently store the book orders ...

  4. swt,jface,rcp

    //swt-jface-rcp,基本结构:display类,shell类,组件:widget窗口控件,control控件,composites面板,button,label,text文本框,list列 ...

  5. PHP+lghttpd + postgresql 环境搭建

    PHP+lghttpd + postgresql 环境搭建 Linux 下PHP环境搭建 安装环境:PHP+lghttpd + postgresql 1:yum install lighttpd 红旗 ...

  6. 通过Type.InvokeMethod实现方法的重载

    版本:.NET Framework 3.5 先来一个反射调用方法的例子: using System; using System.Reflection; class Example { static v ...

  7. ipsec vpn私网数据大量掉包问题

    周四出现了一个很奇葩的问题,所有的站点的VPN通信都是正常的,唯独郑州节点和中心节点的私网数据长ping掉包量达到20%左右,在中心节点ping郑州节点公网IP没有发现掉包问题,故障排除如下: 1.测 ...

  8. xcode6 iOS sdk8.1隐藏系统状态栏

    在代码项目(uzplayer)从iOS6升级到iOS8之后,头发如今视频播放器有.系统状态栏后面的背景: 这样就会导致有的时候按下Donebutton,或者拖滑块没有效果 所以,我们须要想个办法.把这 ...

  9. malloc函数的一种简单的原理性实现

    malloc()是C语言中动态存储管理的一组标准库函数之一.其作用是在内存的动态存储区中分配一个长度为size的连续空间.其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针 ...

  10. TreeSet排序

    TreeSet的排序能够通过两种方法来实现: 1.通过TreeSet(Comparator<? super E> comparator) 构造方法指定TreeSet的比較器进行排序. 2. ...