博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WP7->界面->页面导航、切换及参数传递
阅读量:6299 次
发布时间:2019-06-22

本文共 2857 字,大约阅读时间需要 9 分钟。

问题:如何进行页面间的切换(或导航),并在切换时互相传递参数

  我的理解:使用“NavigationService”可以满足你所有需求

 

示例:

从main页面切换至page1并进行参数传递,再从page1返回main

 

前置条件:

1)  XAML基础

2)  C#基础

 

实现:

目录:

1)  创建一个基本应用并新增一个页面

2)  修改页面至‘示例’所示

3)  添加事件代码

4)  测试运行

 

1 创建一个基本应用并新增一个页面

1)  创建一个基本的Windows Phone应用程序,OS版本7.0

2)  新增一个页面“Page1”

2 修改页面至‘示例’所示

1)  MainPage界面代码

1     
2
3
4
5
6 7
8
9
10
11
12 13
14
15
16
17
18
19
20
21
22

2)  Page1界面代码

1     
2
3
4
5
6 7
8
9
10
11
12 13
14
15
16
17
18
19
20
21
22

3 添加事件代码

1)  在MainPage的Button的click事件中添加:

1         private void button1_Click(object sender, RoutedEventArgs e)2         {3             NavigationService.Navigate(new Uri("/Page1.xaml?Says=" + textBox2.Text, UriKind.Relative));4         }

其中,"/Page1.xaml?Says=" + textBox2.Text,/Page1.xaml意思就是跳转到Page1,"?"号后面就是要传递的信息,Says是要传递的参数名,“=”号后面是参数值

2)  对应的,我们需要在Page1页面中接收这段信息,在Page1的PhoneApplicationPage_Loaded事件中接收

1         private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)2         {3             string says = "";4             if (NavigationContext.QueryString.Keys.Contains("Says"))5             {6                 NavigationContext.QueryString.TryGetValue("Says", out says);7                 textBox1.Text = says;8             }9         }

注意:如果使用NavigationService.Navigate方法来切换页面,每一次向Page1切换,其实质是将Page1重新实例化了一次,所以PhoneApplicationPage_Loaded事件在每一次切换时都会发生,这样就保证了我们的信息传递是一直有效的。

3)  在Page1的Button的click事件中添加:

1         private void button1_Click(object sender, RoutedEventArgs e)2         {3             NavigationService.Navigate(new Uri("/MainPage.xaml?Says=" + textBox2.Text, UriKind.Relative));4         }

4)  对应的,需要在MainPage中接收

1         private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)2         {3             string says = "";4             if (NavigationContext.QueryString.Keys.Contains("Says"))5             {6                 NavigationContext.QueryString.TryGetValue("Says", out says);7                 textBox1.Text = says;8             }9         }

4 测试运行

 

说明:

1)  页面导航的方法有很多,NavigationService只是其中一种

2)  进行信息传递的方法也有好几种,这里只讲到一种,有些方法中甚至可以传递对象

3)  目前使用的方法中,每一次页面切换其实质是对Page进行了重新实例化,即对页面进行了重建

 

转载于:https://www.cnblogs.com/cation/archive/2012/11/06/2756814.html

你可能感兴趣的文章
操作系统真实的虚拟内存是什么样的(一)
查看>>
hadoop、hbase、zookeeper集群搭建
查看>>
python中一切皆对象------类的基础(五)
查看>>
modprobe
查看>>
android中用ExpandableListView实现三级扩展列表
查看>>
%Error opening tftp://255.255.255.255/cisconet.cfg
查看>>
java读取excel、txt 文件内容,传到、显示到另一个页面的文本框里面。
查看>>
《从零开始学Swift》学习笔记(Day 51)——扩展构造函数
查看>>
python多线程队列安全
查看>>
[汇编语言学习笔记][第四章第一个程序的编写]
查看>>
android 打开各种文件(setDataAndType)转:
查看>>
补交:最最原始的第一次作业(当时没有选上课,所以不知道)
查看>>
Vue实例初始化的选项配置对象详解
查看>>
PLM产品技术的发展趋势 来源:e-works 作者:清软英泰 党伟升 罗先海 耿坤瑛
查看>>
vue part3.3 小案例ajax (axios) 及页面异步显示
查看>>
浅谈MVC3自定义分页
查看>>
mybatis学习
查看>>
LCD的接口类型详解
查看>>
Spring Boot Unregistering JMX-exposed beans on shutdown
查看>>
poi 导入导出的api说明(大全)
查看>>