wp8.1 Study1: 页面导航&页面间值传递
摘要:wp8.1与wp8中很多API是不一样了,wp8.1把以前wp7.x时的api去掉了,更多与win8.1的API相似。比如以下的页面导航和页面之间的值传递
1、页面导航
利用Frame.Navigate() 方法,C#语句如下:
Frame.Navigate(typeof(Page2));//Page2为一个页面的名称
这里需要注意的是此方法是可以重载的,即后面介绍的页面间值传递方法。
2、页面间值传递
这里利用Frame.Navigate()重载方法,进行单个值传递和多个值传递
1)单个值传递:可以传递字符、数字等数据,如
在Page1.xaml.cs中
na=myTextbox.text;
Frame.Navigate(typeof(Page2), na);
而在Page2.xaml.cs中,接收数据
//在OnNavigate()方法中接收传递的数据 protected override void OnNavigatedTo(NavigationEventArgs e)
{ myTextblock.Text = e.Parameter.ToString();
}
2)多值传递:其基本方法也是和单值传递方法的思想是一样的。
参考方法如下:
首先新建个类
namespace navigateSample
{
public class NavigateContext
{
public string name { get; set; }
public int id { get; set; }
public NavigateContext(string name, int id)
{
this.id = id;
this.name = name;
}
}
}
然后利用NavigateContext类的进行多值传递
NavigateContext na = new NavigateContext(myTextbox.Text, (int)mySlider.Value);
Frame.Navigate(typeof(Page2), na);//myTextbox是Page页面中Textbox.name, mySlider是Page页面中Slider.name
而在Page2.xaml.cs中,接收数据
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var na = (NavigateContext)e.Parameter;
myTextblock1.Text =na.name;
myTextblock2.Text = na.id.ToString();
}
总结:以上知识是学习Bob的视频所学到的,如果有什么不对欢迎指出!
--------------------------------------------------------------------------------------------------------12.05更新
理论知识
一、页面导航
1、窗口、框架、页面的关系(Windows, Frames and Pages)
windows包含单个frame,大小在面积的100%。
frame中包含的页面,也通常在大小提供给windows的面积的100%。
在Windows商店应用程序的平板/ PC,应用程序可以有多个窗口。在WP中,应用程序只有一个WINDOW。
2、框架和导航返回堆栈(The Frame and the Navigation BackStack)
Frame是在应用程序启动被创建,Frame为页面Page充当容器,同时当你导航到其他页面,它会保存一个导航历史。
例子:1)在页面中导航,C#代码如下:
private void itemListView_ItemClick(object sender, ItemClickEventArgs e)
{
// Navigate to the appropriate destination page, configuring the new page
// by passing required information as a navigation parameter
var itemId = ((MyListViewItem)e.ClickedItem).UniqueId;
Frame.Navigate(typeof(MyDetailPage), itemId);
}
2)导航后退,C#代码:
private void btnGoBack_Click( object sender, RoutedEventArgs e)
{
if (this.Frame.CanGoBack)
this.Frame.GoBack();
}
3、返回键注意项
1)标准的Windows Phone UX(用户体验)是使用返回键导航背部或关闭瞬间UI。默认情况下,返回键导致导航回到以前的应用程序 ,而不是页面!
2)在Windows Phone的商店应用程序,你必须包含的代码重写这导致应用程序中向后导航。
3)不同于Windows Phone的Silverlight(即WP8设计): 在一个应用程序,倒着页面导航是默认该框架
4)重写返回键:空白模板是不包含返回键的处理代码,而在Hub模板中包含NavigationHelper类,既可以正确向后页面导航。如果你需要重写返回键,替换你自己的代码自定义导航处理,下面是在一个页面中重写返回键C#代码:
public sealed partial class SecondPage : Page
{
... protected override void OnNavigatedTo(NavigationEventArgs e)
{
Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
} protected override void OnNavigatedFrom(NavigationEventArgs e)
{
Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed;
} async void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
e.Handled = true; // We've handled this button press // If the secondary UI is visible, hide it
if (SecondaryUI.Visibility == Visibility.Visible )
{
FadeOutSecondaryStoryboard.Begin();
}
else
{
// Standard page backward navigation
if (Frame.CanGoBack)
Frame.GoBack();
}
}
如果整个APP都需求返回键重写,可以把类似代码写到APP.XAML.CS文件当中。
4、页面缓存模式(Page Cache Mode)
当你第一次导航到一个页面类型,一个新的实例(页面)被创建。当你离开此页面,该实例是否被缓存或被破坏由页面的NavigationCacheMode属性决定的
NavigationCacheMode.Disabled:无论你导航向前或向后的页面,你得到的页面的新实例
NavigationCacheMode.Enabled:页面可以被缓存,但当缓存超过一定数值(WP8.1中默认是1,是由Frame.CacheSize属性确定的),缓存实例将被丢弃
NavigationCacheMode.Required:页面可以被缓存,而且不管框架(Frame.CacheSize)的大小,缓存的实例可以为每次访问重新应用,即页面的内容还是一样的。
5、NavigationHelper类
可以使用 NavigationHelper类 来保存和重载入页面的状态。在基础页面模板中,会自动载入NavigationHelper类 ,我们可以借此来载入此类。
wp8.1 Study1: 页面导航&页面间值传递的更多相关文章
- php从入门到放弃系列-04.php页面间值传递和保持
php从入门到放弃系列-04.php页面间值传递和保持 一.目录结构 二.两次页面间传递值 在两次页面之间传递少量数据,可以使用get提交,也可以使用post提交,二者的区别恕不赘述. 1.get提交 ...
- Chrome调试本地文件无法使用window.opener对象进行窗口间值传递
今天在百度BAE上建了个应用,svn上传后发现页面间互调有些问题,几经查询发现: (1)IE下正常的window.opener.object1.object2页面间对象访问方法在Chrome下不能使用 ...
- 详细介绍ASP.NET页面间数据传递的使用方法
源码:http://www.jinhusns.com/Products/Download/?type=xcj 在ASP.NET中,页面间数据传递的方法有很多.下面为大家总结一下,页面间数据传递的方法. ...
- ASP.NET页面间数据传递的方法<转>
ASP.NET页面间数据传递的方法 作者: 灰色的天空2 来源: 博客园 发布时间: 2010-10-28 11:06 阅读: 822 次 推荐: 0 原文链接 [收藏] 摘要:本 ...
- ASP.NET中实现页面间数据传递的方法
说到页面间数据传递,很多人都会想到通过像Session这样的全局变量,但是向Session中添加的东西太多会增加服务器的压力,页面间数据传递,数据的作用范围越小越好. ASP.NET页面间数据传递 ...
- ASP.NET 页面间数据传递的方法
在做WEB开发时,很多地方会涉及到页面间的数据传递.这几天在完善教务基础系统,遇到了这个问题,上网查了一些资料,现总结如下: 说到页面间数据传递,很多人都会想到通过像Session这样的全局变量,但是 ...
- [SpringMVC-值传递] 初始SpringMVC--SpringMVC中的值传递
把页面中输入的值传递到后台以及后台向前台传递,有以下几种方式 这里以登录为例子,实现打印前端页面的值 1,新建一个控制器,根据不同的请求地址实现不同的请求方式 LoginController.java ...
- WP8.1 页面导航 缓存问题
最近开始学习wp8.1开发,在页面的导航学习时发现了一点问题,即当使用Frame.Navigate()方法进行页面的跳转时,每次都会重新实例化一个页面.而在新的页面采用Frame.GoBack()或者 ...
- wp8.1 页面返回 页面导航
public The_second() public second() { this.InitializeComponent(); Frame frame = Window.Current.Conte ...
随机推荐
- Android开发设计模式之——单例模式关于线程不安全问题处理
单例模式是设计模式中最常见也最简单的一种设计模式,保证了在程序中只有一个实例存在并且能全局的访问到.比如在Android实际APP 开发中用到的 账号信息对象管理, 数据库对象(SQLiteOpenH ...
- Swift语言学习之学习资源
(1) http://swift.sh (2) Let's Swift – WRITE THE CODE. CHANGE THE WORLD. http://letsswift.com (3)http ...
- NYOJ 298 点的变换
题目链接:298 点的变换 这题放在矩阵快速幂里,我一开始想不透它是怎么和矩阵搭上边的,然后写了个暴力的果然超时,上网看了题解后,发现竟然能够构造一些精巧的矩阵来处理,不得不说实在太强大了! http ...
- java 文件操作
1.按行读取 File file = new File(“your path”); BufferedReader reader = null; try { //System.out.println(& ...
- phalcon: Profiling分析 profilter / Plugin结合,dispatcher调度控制器 监听sql执行日志
个人觉得profilter 跟 logger 功能差不多,logger的功能在于写入,profilter功能在于sql后及时显示分析.都是对sql执行的的分析:一个是写入log文件,一个是直接在页面展 ...
- 基于OGG的Oracle与Hadoop集群准实时同步介绍
版权声明:本文由王亮原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/220 来源:腾云阁 https://www.qclou ...
- 物料BOM和生产订单BOM的区别
物料BOM和生产订单BOM的区别[@more@] 一般企业生产部在SAP创建生产订单的时候,就会产生一个生产订单BOM,这里的生产订单BOM是读取的物料BOM. 由于其它原因,需要修改成品的某几个零部 ...
- python 练习 3
#!/usr/bin/python # -*- coding: utf-8 -*- def z94(): #斐波那契数列 def filie(x): a,b,t=1,1,0 if x==1 or x= ...
- Ubuntu 下 Neo4j单机安装和集群环境安装
1. Neo4j简介 Neo4j是一个用Java实现的.高性能的.NoSQL图形数据库.Neo4j 使用图(graph)相关的概念来描述数据模型,通过图中的节点和节点的关系来建模.Neo4j完全兼容A ...
- AngularJS 中文资料+工具+库+Demo 大搜集
中文学习资料: 中文资料且成系统的就这么多,优酷上有个中文视频. http://www.cnblogs.com/lcllao/archive/2012/10/18/2728787.html 翻译的 ...