博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows Phone开发(7):当好总舵主 转:http://blog.csdn.net/tcjiaan/article/details/7281421...
阅读量:5051 次
发布时间:2019-06-12

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

吹完了页面有关的话题,今天我们来聊一下页面之间是如何导航的,在更多情况下,我们的应用程序不会只有一个页面的,应该会有N个,就像我们做桌面应 用开发那样,我们一个应用程序中可能不止一个窗体(极简单的程序除外),我们要处理窗体之间的切换;同理地,在进行Web开发的时候,我们的Web应用程序可能也不止一个页面,我们要处理页面之间的切换。当然了,在我们的手机应用中,同样需要这种操作,我们称之为“导航”,作为开发者,我们全盘操控页面之间的切换,所以说,我们也当了App的“总舵主”。

 

 
一、如何进行导航。
进行页面导航的一种简单方法就是使用HyperlinkButton控件的NavigateUri属性来指定要导航的目标页面的XAML文件的URI,下面通过一个简单的例子来试试吧。

新建一个WP应用项目,在主页面中放一个HyperlinkButton控件,把NavigateUri的值设为 /pageSecond.xaml,接着新建一个页面,命名为pageSecond.xaml。

[html] 
  1. <HyperlinkButton Content="跳到页面二" Height="78" HorizontalAlignment="Left" Margin="126,86,0,0" Name="hyperlinkButton1" VerticalAlignment="Top" Width="216" FontSize="32" FontStyle="Normal" FontStretch="Normal"  
  2.                   NavigateUri="/pageSecond.xaml"/>  

 

第二种导航方法是通过代码方式实现,如按钮的单击事件。

[csharp] 
  1. private void button1_Click(object sender, RoutedEventArgs e)  
  2. {  
  3.     this.NavigationService.Navigate(new Uri("/pageSecond.xaml", UriKind.Relative));  
  4. }  

 

二、OnNavigatedFrom 方法和OnNavigatedTo 方法。
1、当用户即将离开当前页时,将调用OnNavigatedFrom 方法;
2、当用户从其它页面导航到该页面时调用OnNavigatedTo 方法。
 
相信大家多写一些代码测试一下,这个就很好理解了。
A、在主页面中添加以下代码。
[csharp] 
  1. // 离开主页面  
  2. protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)  
  3. {  
  4.     base.OnNavigatedFrom(e);  
  5.   
  6.     System.Diagnostics.Debug.WriteLine("***** 已离开主页面。");  
  7. }  

B、在第二个页面中添加以下代码。

[csharp] 
  1. // 导航到第二个页面  
  2. protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)  
  3. {  
  4.     base.OnNavigatedTo(e);  
  5.   
  6.     System.Diagnostics.Debug.WriteLine("*****  Hi,已经来到第二个页面了。");  
  7. }  

 

然后,你运行程序导航一下,看看“输出”窗口里面有什么?

 

三、如何在页面间传递参数。

在安卓开发中,从一个Activity到另外一个Activity,需要Intent对象传递内容,不过,在WP开发中,我们只需要像WEB页面那样在URI在附加上参数即可。

如:/Numbb.xaml?pt1=aaaa&pt2=ccccc。

 

现在,我们把刚才的例子改一下,在主页面上随便放一个TextBox,我们要把这个页面中输入的内容传递到第二个页面中。

[csharp] 
  1. private void button1_Click(object sender, RoutedEventArgs e)  
  2.  {  
  3.      this.NavigationService.Navigate(new Uri("/pageSecond.xaml?str=" + textBox1.Text, UriKind.Relative));  
  4.  }  

在第二个页面中取出数据。在第二个页面中取出数据。

[csharp] 
  1. // 导航到第二个页面  
  2. protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)  
  3. {  
  4.     base.OnNavigatedTo(e);  
  5.   
  6.     // 传递的参数叫什么名字,这里就按什么名字来取。  
  7.     string pv = this.NavigationContext.QueryString["str"];  
  8.     this.textBlock1.Text = pv;  
  9. }  

 

 

转载于:https://www.cnblogs.com/songtzu/archive/2012/07/24/2607175.html

你可能感兴趣的文章
如何实现redis集群?
查看>>
架构中的集成难点
查看>>
正则表达式
查看>>
liunx系统虚拟机下安装tomcat9以及访问tomcat案例
查看>>
Oracle 插入Date数据
查看>>
word文档操作
查看>>
UIpageControl
查看>>
js判断是否为IE浏览器,是返回true,否返回false
查看>>
Linux性能分析 vmstat基本语法
查看>>
SpringMVC框架学习笔记(2)——使用注解开发SpringMVC
查看>>
深入理解递归函数的调用过程
查看>>
《在C#中实现Socket端口复用》 以及《 UDP 一个封锁操作被对 WSACancelBlockingCall 的调用中断。》问题...
查看>>
PDF格式的“在线阅读”和“下载”
查看>>
无耻之徒(美版)第七季/全集Shameless US迅雷下载
查看>>
svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted
查看>>
Webpack4 学习笔记四 暴露全局变量、externals
查看>>
CF1005F Berland and the Shortest Paths
查看>>
vscode点击ctrl键报错Request textDocument/definition failed.
查看>>
图王:刺客——运筹帷幄善于在变化中找到方向的站长
查看>>
Safari无痕浏览影响localStorage
查看>>