4. 导航
2015-11-27 15:31
176 查看
1. Frame
UWP 上的页面导航都是通过 Frame 实现的,其中,应用本身就是一个 rootFrame:
我们当然也可以在 Frame 里面再内嵌一个自己的 Frame。
2. Frame.Navigate
当我们要进行页面导航时,可以简单的使用 Navigate 方法进行。
比如我们有一个 Name="myFrame" 的 Frame,想要导航到 Page1:
而当我们在 Page1 中想要导航去 Page2 时,则可以使用 Frame 找到上一级的 Frame 元素(myFrame)进行导航:
而如果我们想要在页面之间传值,则可以直接把对象传递:
然后在 Page2 中重写 OnNavigatedTo 方法以接受数据:
3. History
页面的导航会产生一个导航历史栈,因此也可以通过 GoBack 和 GoForward 的方法向前向后导航,导航前应检查 CanGoBack 和CanGoForward 属性:
要注意的是,往前导航时会将页面重置,也就是说如果之前的页面上有填写内容,返回时该填写内容会消失。
解决的方法有很多,其中一个方法就是将该数据保存在 App 下的全局变量中。
4. HyperlinkButton
可以通过 HyperlinkButton 来打开浏览器浏览页面:
5. 手机上的返回键
如果你按下手机上的返回键,应用并不会返回上一页,而是回到手机系统主界面,如果想实现返回上一页的需求,可以通过手机特有的 API 进行调整,具体方法在以后的博客中会介绍。
原视频链接:
UWP-019 - Working with Navigation
UWP 上的页面导航都是通过 Frame 实现的,其中,应用本身就是一个 rootFrame:
Frame rootFrame = Window.Current.Content as Frame;
我们当然也可以在 Frame 里面再内嵌一个自己的 Frame。
2. Frame.Navigate
当我们要进行页面导航时,可以简单的使用 Navigate 方法进行。
比如我们有一个 Name="myFrame" 的 Frame,想要导航到 Page1:
myFrame.Navigate(typeof(Page1));
而当我们在 Page1 中想要导航去 Page2 时,则可以使用 Frame 找到上一级的 Frame 元素(myFrame)进行导航:
Frame.Navigate(typeof(Page2));
而如果我们想要在页面之间传值,则可以直接把对象传递:
Frame.Navigate(typeof(Page2), textBox.Text);
然后在 Page2 中重写 OnNavigatedTo 方法以接受数据:
protected override void OnNavigatedTo(NavigationEventArgs e) { textBox.Text = e.Parameter as string; }
3. History
页面的导航会产生一个导航历史栈,因此也可以通过 GoBack 和 GoForward 的方法向前向后导航,导航前应检查 CanGoBack 和CanGoForward 属性:
if (myFrame.CanGoBack) { myFrame.GoBack(); } if (myFrame.CanGoForward) { myFrame.GoForward(); }
要注意的是,往前导航时会将页面重置,也就是说如果之前的页面上有填写内容,返回时该填写内容会消失。
解决的方法有很多,其中一个方法就是将该数据保存在 App 下的全局变量中。
4. HyperlinkButton
可以通过 HyperlinkButton 来打开浏览器浏览页面:
<HyperlinkButton Content="Go to Microsoft" NavigateUri="http://www.microsoft.com"/>
5. 手机上的返回键
如果你按下手机上的返回键,应用并不会返回上一页,而是回到手机系统主界面,如果想实现返回上一页的需求,可以通过手机特有的 API 进行调整,具体方法在以后的博客中会介绍。
原视频链接:
UWP-019 - Working with Navigation
相关文章推荐
- jquery实现的个性网站首页 详细信息
- Bootstrap精简教程
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- jQuery的deferred对象
- Hibernate+Freemarker分页控件实现
- Java基础技术
- Android 自定义水波,touch和move状态下触发 (玩具)
- 图片上传和裁剪应用:Croppie
- Hive元数据存于mysql中文乱码解决
- Otter(二)---了解zookeeper
- mysql监听的端口变成0
- TCP 的那些事儿(下)
- http://oldboy.blog.51cto.com/2561410/1717217
- ios工程引用,静态库相关
- Kafka 配置说明
- 创业的第七十八天
- shell函数
- 8583
- Mybatis逆向工程
- 《大话数据结构》之Kruskal算法