原文: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. 自定义ALV控件的工具条按钮

    *&---------------------------------------------------------------------* *& Report YTEST028 ...

  2. Firemonkey 自定义Button的Style

    这篇文章模仿HTML中基于CSS的Button,通过Style实现自定义样式的Button. 前言 主要模仿的CSS代码如下: CSS Code 123456789101112131415161718 ...

  3. 眼见为实(2):介绍Windows的窗口、消息、子类化和超类化

    眼见为实(2):介绍Windows的窗口.消息.子类化和超类化 这篇文章本来只是想介绍一下子类化和超类化这两个比较“生僻”的名词.为了叙述的完整性而讨论了Windows的窗口和消息,也简要讨论了进程和 ...

  4. java jquery 函数多參数传递

    业务需求: 名次   伙伴 业绩 签单 面谈 每日目标 1 文彬 5100 6 10 查看目标 2 马红月 4550 4 6 查看目标 3 王刚 4100 3 9 查看目标 4 郭亚凯 3450 4 ...

  5. 大白菜U盘启动制作工具装机维护版V5.0–大白菜U盘下载中心

    大白菜U盘启动制作工具装机维护版V5.0–大白菜U盘下载中心   大白菜U盘启动制作工具装机维护版V5.0

  6. android端向服务器提交请求的几种方式

    1.GET方式 其实GET方式说白了,就是拼接字符串..最后拼成的字符串的格式是: path ?  username= ....& password= ...... public boolea ...

  7. 用Feed43为随意站点定制RSS feed教程~

     用Feed43为随意站点定制RSS feed教程- Feed43--自己定义RSS种子的免费工具中笔者的最爱,确切来讲Feed43不适合心脏衰弱者.通过它的服务,我能够很好地控制种子的终于样式,当然 ...

  8. Missile:双状态DP

    题目 描写叙述 Long , long ago ,country A invented a missile system to destroy the missiles from their enem ...

  9. AFNetworking2.0后 进行Post请求

    本文以新浪微博的Oauth认证为样例进行Post请求的演示 以下直接上代码: #import "ViewController.h" #import "AFNetworki ...

  10. Android APP代码拨打电话、打开手机分享功能等隐式意图

    Android APP拨打电话: Intent intent=new Intent(Intent.ACTION_DIAL,Uri.parse("tel:"+110)); start ...