WP7页面导航
2012-02-21 13:17
288 查看
框架与页面架构
Frame
—— 只有一个单独的 PhoneApplicationFrame
—— 包含一个或多个 PhoneApplicationPage
—— 也包含系统托盘和应用程序栏
Page
—— 包含标题 , 可以有独立的应用程序栏
—— Page 之间可以相互 Navigation(导航)
Windows Phone 是基于页面的导航 , 页面上没有状态
在 XAML 里 , 页面进行导航 HyperlinkButton 控件 NavigateUri="/Views/Music.xaml" 属性
在 CS 代码里 , 页面进行导航 NavigationService.Navigate(new Uri("/Views/Music.xaml",UriKind.Relative)); UriKind.Relatvie 指定了跳转为相对路径
路径别名
—— 在 APP.xaml 里 , 引入命名空间 xmlns:nav="clr-namespace:System.Windows.Navigation;assembly=Microsoft.Phone" ; 注意 , 所在应用程序集 ;assembly=Microsoft.Phone , 而不是 System.WIndows
—— 在 Application.Resources 节点里 , 添加 别名导航配置信息
<!Application Resources>
<Application.Resources>
<nav:UriMapper x:Key="ViewsUriMapper">
<nav:UriMapping Uri="Music" MappedUri="/Views/Music.xaml"></nav:UriMapping>
<nav:UriMapping Uri="Video" MappedUri="/Views/Video.xaml"></nav:UriMapping>
<nav:UriMapping Uri="Picture" MappedUri="/Views/Picture.xaml"></nav:UriMapping>
<nav:UriMapping Uri="WebBrowser" MappedUri="/Views/WebBrowser.xaml"></nav:UriMapping>
</nav:UriMapper>
</Application.Resources>
—— 去应用程序的构造函数里 , 映射别名的配置信息
App.xaml.cs 的 构造函数
把别名配置信息 , 映射进应用程序
RootFrame 每个应用程序 , 都有一个唯一的最顶级的 Frame
this.RootFrame.UriMapper = Resources["ViewsUriMapper"] as UriMapper
—— 使用别名进行导航 ; NavigateUri="Music" Music 就是 别名
页面传值
—— 普通传值
1 在要跳转的页面后面加参数 ; NavigateUri="/Views/Music.xaml?musicName=音乐名称2"
2 在接收页面的 xaml 文件里的 <phone:PhoneApplicationPage 里添加 “页面加载 事件“ Loaded="PhoneApplicationPage_Loaded"
3 在页面加载事件 添加处理代码 , 获取参数 ,赋值等操作
if (NavigationContext.QueryString.Count>0)
{
MusicNameTextBlock.Text = NavigationContext.QueryString["musicName"]
}
—— 别名传值
1 别名配置映射信息里 , 添加参数配置信息
<nav:UriMapping Uri="Music/{musicName}" MappedUri="/Views/Music.xaml?musicName={musicName}"></nav:UriMapping>
Music/{musicName} 这里的 musicName 必须和 ?musicName={musicName} 的一样 , 且区分大小写 .
2 使用带参数的别名
NavigateUri="Music/音乐1" , 这里的 "音乐1" 就是 别名配置信息里 musicName 的值 , 如果不想传递任何职 , 则 Music/ , 反斜杠必须存在
页面间传递对象
可以在 App.xaml.cs 全局应用程序里 , 加一个静态的属性
程序回退按钮
NavigationService.GoBack()
重写回退按钮
在要重写回退的 xaml 页面上 , 重写事件 BackKeyPress, 在处理代码里 e.Cancel = true 就可以重写回退按钮 , 取消了回退的实现 。
Frame
—— 只有一个单独的 PhoneApplicationFrame
—— 包含一个或多个 PhoneApplicationPage
—— 也包含系统托盘和应用程序栏
Page
—— 包含标题 , 可以有独立的应用程序栏
—— Page 之间可以相互 Navigation(导航)
Windows Phone 是基于页面的导航 , 页面上没有状态
在 XAML 里 , 页面进行导航 HyperlinkButton 控件 NavigateUri="/Views/Music.xaml" 属性
在 CS 代码里 , 页面进行导航 NavigationService.Navigate(new Uri("/Views/Music.xaml",UriKind.Relative)); UriKind.Relatvie 指定了跳转为相对路径
路径别名
—— 在 APP.xaml 里 , 引入命名空间 xmlns:nav="clr-namespace:System.Windows.Navigation;assembly=Microsoft.Phone" ; 注意 , 所在应用程序集 ;assembly=Microsoft.Phone , 而不是 System.WIndows
—— 在 Application.Resources 节点里 , 添加 别名导航配置信息
<!Application Resources>
<Application.Resources>
<nav:UriMapper x:Key="ViewsUriMapper">
<nav:UriMapping Uri="Music" MappedUri="/Views/Music.xaml"></nav:UriMapping>
<nav:UriMapping Uri="Video" MappedUri="/Views/Video.xaml"></nav:UriMapping>
<nav:UriMapping Uri="Picture" MappedUri="/Views/Picture.xaml"></nav:UriMapping>
<nav:UriMapping Uri="WebBrowser" MappedUri="/Views/WebBrowser.xaml"></nav:UriMapping>
</nav:UriMapper>
</Application.Resources>
—— 去应用程序的构造函数里 , 映射别名的配置信息
App.xaml.cs 的 构造函数
把别名配置信息 , 映射进应用程序
RootFrame 每个应用程序 , 都有一个唯一的最顶级的 Frame
this.RootFrame.UriMapper = Resources["ViewsUriMapper"] as UriMapper
—— 使用别名进行导航 ; NavigateUri="Music" Music 就是 别名
页面传值
—— 普通传值
1 在要跳转的页面后面加参数 ; NavigateUri="/Views/Music.xaml?musicName=音乐名称2"
2 在接收页面的 xaml 文件里的 <phone:PhoneApplicationPage 里添加 “页面加载 事件“ Loaded="PhoneApplicationPage_Loaded"
3 在页面加载事件 添加处理代码 , 获取参数 ,赋值等操作
if (NavigationContext.QueryString.Count>0)
{
MusicNameTextBlock.Text = NavigationContext.QueryString["musicName"]
}
—— 别名传值
1 别名配置映射信息里 , 添加参数配置信息
<nav:UriMapping Uri="Music/{musicName}" MappedUri="/Views/Music.xaml?musicName={musicName}"></nav:UriMapping>
Music/{musicName} 这里的 musicName 必须和 ?musicName={musicName} 的一样 , 且区分大小写 .
2 使用带参数的别名
NavigateUri="Music/音乐1" , 这里的 "音乐1" 就是 别名配置信息里 musicName 的值 , 如果不想传递任何职 , 则 Music/ , 反斜杠必须存在
页面间传递对象
可以在 App.xaml.cs 全局应用程序里 , 加一个静态的属性
程序回退按钮
NavigationService.GoBack()
重写回退按钮
在要重写回退的 xaml 页面上 , 重写事件 BackKeyPress, 在处理代码里 e.Cancel = true 就可以重写回退按钮 , 取消了回退的实现 。
相关文章推荐
- WP7->界面->页面导航、切换及参数传递
- WP7中的页面导航与传值
- wp7 页面导航方法
- WP7 页面导航报错 跳到System.Diagnostics.Debugger.Break
- WP7页面导航概述
- wp7 页面导航传值和在Tombstoning之后保存状态保存状态
- 【转载】wp7中从墓碑化中重新激活时如何从app.xaml.cs中直接导航到程序的某个页面
- WP7.页面导航
- [翻译]WP7 QuickStart-第十篇-页面导航
- wp7中如和从app.xaml.cs中直接导航到程序的某个页面
- 页面导航【WP7学习札记之七】
- Windows Phone 7 页面导航以及异常处理
- 页面导航
- 起步 - vue-router路由与页面间导航
- iOS开发使用Tab Bar Controller实现页面导航功能
- iOS - 首次安装导航页面方案
- Windows Phone 7 开发 31 日谈——第2日:页面导航
- Qt Quick实现页面之间的导航
- 《微信小程序七日谈》- 第四天:页面路径最多五层?导航可以这么玩
- WP7 RichTextBox导航外部url