Windows Phone开发(7):当好总舵主
来源:互联网 发布:软件下载站 编辑:程序博客网 时间:2024/04/29 04:51
吹完了页面有关的话题,今天我们来聊一下页面之间是如何导航的,在更多情况下,我们的应用程序不会只有一个页面的,应该会有N个,就像我们做桌面应 用开发那样,我们一个应用程序中可能不止一个窗体(极简单的程序除外),我们要处理窗体之间的切换;同理地,在进行Web开发的时候,我们的Web应用程序可能也不止一个页面,我们要处理页面之间的切换。当然了,在我们的手机应用中,同样需要这种操作,我们称之为“导航”,作为开发者,我们全盘操控页面之间的切换,所以说,我们也当了App的“总舵主”。
一、如何进行导航。
进行页面导航的一种简单方法就是使用HyperlinkButton控件的NavigateUri属性来指定要导航的目标页面的XAML文件的URI,下面通过一个简单的例子来试试吧。
新建一个WP应用项目,在主页面中放一个HyperlinkButton控件,把NavigateUri的值设为 /pageSecond.xaml,接着新建一个页面,命名为pageSecond.xaml。
- <HyperlinkButton Content="跳到页面二" Height="78" HorizontalAlignment="Left" Margin="126,86,0,0" Name="hyperlinkButton1" VerticalAlignment="Top" Width="216" FontSize="32" FontStyle="Normal" FontStretch="Normal"
- NavigateUri="/pageSecond.xaml"/>
第二种导航方法是通过代码方式实现,如按钮的单击事件。
- private void button1_Click(object sender, RoutedEventArgs e)
- {
- this.NavigationService.Navigate(new Uri("/pageSecond.xaml", UriKind.Relative));
- }
二、OnNavigatedFrom 方法和OnNavigatedTo 方法。
1、当用户即将离开当前页时,将调用OnNavigatedFrom 方法;
2、当用户从其它页面导航到该页面时调用OnNavigatedTo 方法。
相信大家多写一些代码测试一下,这个就很好理解了。
A、在主页面中添加以下代码。
- // 离开主页面
- protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
- {
- base.OnNavigatedFrom(e);
- System.Diagnostics.Debug.WriteLine("***** 已离开主页面。");
- }
B、在第二个页面中添加以下代码。
- // 导航到第二个页面
- protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
- {
- base.OnNavigatedTo(e);
- System.Diagnostics.Debug.WriteLine("***** Hi,已经来到第二个页面了。");
- }
然后,你运行程序导航一下,看看“输出”窗口里面有什么?
三、如何在页面间传递参数。
在安卓开发中,从一个Activity到另外一个Activity,需要Intent对象传递内容,不过,在WP开发中,我们只需要像WEB页面那样在URI在附加上参数即可。
如:/Numbb.xaml?pt1=aaaa&pt2=ccccc。
现在,我们把刚才的例子改一下,在主页面上随便放一个TextBox,我们要把这个页面中输入的内容传递到第二个页面中。
- private void button1_Click(object sender, RoutedEventArgs e)
- {
- this.NavigationService.Navigate(new Uri("/pageSecond.xaml?str=" + textBox1.Text, UriKind.Relative));
- }
在第二个页面中取出数据。在第二个页面中取出数据。
- // 导航到第二个页面
- protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
- {
- base.OnNavigatedTo(e);
- // 传递的参数叫什么名字,这里就按什么名字来取。
- string pv = this.NavigationContext.QueryString["str"];
- this.textBlock1.Text = pv;
- }
- Windows Phone开发(7):当好总舵主
- Windows Phone开发(7):当好总舵主
- Windows Phone开发(20):当MediaElement和VideoBrush合作的时候
- Windows Phone开发(20):当MediaElement和VideoBrush合作的时候 .
- Windows Phone 7开发工具
- Windows Phone 7开发入门
- Windows Phone 7 开发经验总结
- Windows PHONE 7从零开始开发
- Windows Phone 7 开发经验
- Windows Phone 7开发总结
- windows phone 7开发环境
- 开发WP7项目的好工具: Windows Phone Commands
- 开发WP7项目的好工具: Windows Phone Commands
- Windows Phone 7应用程序开发(二)Hello Windows Phone(5)
- (转)Windows Phone 7 中文开发教程资料概览
- 一起学Windows phone 7开发(一.Application Bar)
- 一起学Windows phone 7开发(四. DeepZoom)
- Windows Phone 7开发海盗游戏(有源码)
- Windows Phone开发(6):处理屏幕方向的改变
- ARM中的MOV指令 立即数合法性
- Linux添加系统服务
- codeforces 243A
- css中background url不显示图片
- Windows Phone开发(7):当好总舵主
- Vistual C++ 中的C运行时库浅析
- Windows Phone开发(8):关于导航的小技巧
- Windows Phone开发(9):关于页面状态
- 如何区分pci设备
- vs2005下部分断点无效的问题
- zoj1013 great equipment
- Windows Phone开发(10):常用控件(上)
- 获取任意文件的缩略图