Silverlight实例教程 - Navigation导航框架URI映射机制

Silverlight实例教程 - Navigation导航框架URI映射机制,第1张

概述      在上几篇Silverlight Navigation导航框架教程中,主要介绍了Silverlight Navigation导航框架基础,本篇开始将结合实例介绍Silverlight Navigation导航框架的应用。按照个人经验来讲,学习Silverlight Navigation导航框架应用,首先需要了解导航框架对URI地址映射原理,所以,本篇将介绍Navigation导航框架UR  

@H_403_9@


 

 

在上几篇Silverlight Navigation导航框架教程中,主要介绍了Silverlight Navigation导航框架基础,本篇开始将结合实例介绍Silverlight Navigation导航框架的应用。按照个人经验来讲,学习Silverlight Navigation导航框架应用,首先需要了解导航框架对URI地址映射原理,所以,本篇将介绍Navigation导航框架URI映射机制

快速理解URI映射机制概念
对于熟悉ASP.NET MVC路由机制的开发人员来讲,ASP.NET MVC URL路由机制并不陌生。而Silverlight导航框架URI映射机制的概念和ASP.NET MVC URL路由机制相类似,使用指定格式的URI表示原始URI信息,并生成映射关系,在项目运行时,Silverlight导航框架URI映射类将解析预先定义的URI变量,向其对应URI映射发出请求,以达到页面跳转或参数传递的目的。
从原理上讲,向Silverlight导航框架Frame类添加URI映射是定义UriMapper类的一个或者多个UriMap@R_403_6817@实例的过程。而UriMapper类主要的功能是根据映射对象集合中指定的匹配对象规则,将统一资源标识符(URI)转换为新的URI,将请求的URI映射到不同的URI中。需要注意的是URI映射是将URI指向一个字符串类型变量,而不是实际的文件路径。
在定义映射规则时,不需要使用完全匹配的URI,可以包含占位符号作为替换标识。

 

为了方便演示本篇实例,将使用“Silverlight实例教程 - 理解Navigation导航框架Frame类”文章中的源代码项目作为演示项目。

 

Navigation框架URI映射的使用
在实际项目中,使用Silverlight导航框架URI映射功能前需要在App.xaml资源文件中添加一个UriMapper对象作为XAML资源,在资源文件中,将声明所有需要URI映射的变量。最基本的代码格式如下:

< Application   
  
x:Class ="SilverlightNavigationDemo.App"
  xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:uriMapper
="clr-namespace:System.windows.Navigation;assembly=System.windows.Controls.Navigation" > @H_502_74@

   < Application.Resources > @H_502_74@
      
     < uriMapper:UriMapper  x:name ="PageMapper" > @H_502_74@
         < uriMapper:UriMap@R_403_6817@  Uri ="/Home"  MappedUri ="/VIEws/Home.xaml" /> @H_502_74@
         < uriMapper:UriMap@R_403_6817@  Uri ="/{pagename}"  MappedUri ="/VIEws/{pagename}.xaml" /> @H_502_74@
     </ uriMapper:UriMapper > @H_502_74@
      
   </ Application.Resources > @H_502_74@
</ Application >

 

在UriMapper对象中,添加UriMap@R_403_6817@对象,该对象将当前Navigation框架传递的URI进行映射转换,指向项目目录中真实页面路径。 


在本实例中,使用<uriMapper:UriMap@R_403_6817@ Uri="/Home" MappedUri="/VIEws/Home.xaml"/>定义简单导航框架URI映射规则,其含义是使用URI = “/Home”,匹配解析到 /VIEws/Home.xaml页面,下图中,URI在地址栏中,仅显示/Home,而实际文件指向则是/VIEws/Home.xaml。 该映射规则是Navigation导航框架中最简单的页面映射。


@H_403_9@

 

导航框架通用映射符号

 

而UriMapper对象除了支持以上标准映射格式外,同时也支持占位符号作为通用映射符号,实现页面映射功能,其中占位符号名称作为变量的形式可以被匹配该段中的任何值替换。

其语法表示方式是:  {占位字段名}

例如: <uriMapper:UriMap@R_403_6817@ Uri="/{pagename}" MappedUri="/VIEws/{pagename}.xaml"/>

该映射规则使用{pagename}作为通用映射占位符号,通过Navigation导航框架解析后,将指向/VIEws/{pagename}.xaml页面。如果将{pagename}替换为Home,该规则将于第一条映射规则相同,如下:

 

<uriMapper:UriMap@R_403_6817@ Uri="/Home" MappedUri="/VIEws/Home.xaml"/>


完成地址映射机制设置后,需要对当前项目的Navigation导航框架Frame类UriMapper属性进行赋值,将该属性关联至App.xaml资源文件中的UriMapper类,其赋值方法如下:

 

< navigation:Frame  x:name ="ContentFrame"  Style =" {StaticResource ContentFrameStyle} "  UriMapper =" {StaticResource PageMapper} "  Navigated ="ContentFrame_Navigated"  NavigationFailed ="ContentFrame_NavigationFailed" > @H_502_74@
</ navigation:Frame >

 


 

导航框架映射机制传递参数

通过Silverlight Navigation导航框架机制,可以实现页面间参数传递功能。例如,在项目Home页面输入一个参数值,传递到About页面中,其映射规则如下:

 

 

< uriMapper:UriMap@R_403_6817@  Uri ="/About/{parameter}"  MappedUri ="/VIEws/About.xaml?parameter={parameter}" />

 

 

在Navigation导航框架运行时, 解析URI传递参数,指向到"/VIEws/About.xaml?parameter=Hello%20Silverlight",通过对NavigationContext的调用,About页面即可获得传递的参数值。(对于Silverlight Navigation传参,将在下一篇详细介绍)


@H_403_9@

 

 

 

 

URI映射机制优点
使用Silverlight导航框架URI映射机制不仅可以提供友好的URI访问格式,同时也可以用于隐藏项目页面名称,从而保护项目内部结构的作用。
需要注意的一点,Silverlight导航框架URI映射机制变量解析具有一定顺序性,URI请求响应顺序是由具体映射路径到通用映射路径。

 

例如,简单修改以上映射机制规则的顺序如下:

 

< uriMapper:UriMapper  x:name ="PageMapper" > @H_502_74@
        < uriMapper:UriMap@R_403_6817@  Uri ="/{pagename}"  MappedUri ="/VIEws/{pagename}.xaml" /> @H_502_74@
        < uriMapper:UriMap@R_403_6817@  Uri ="/Home"  MappedUri ="/VIEws/Home.xaml" /> @H_502_74@
         < uriMapper:UriMap@R_403_6817@  Uri ="/About/{parameter}"  MappedUri ="/VIEws/About.xaml?parameter={parameter}" /> @H_502_74@
</ uriMapper:UriMapper >

 

在 Silverlight导航框架执行时, 如果试图传递参数到About页面,则会d出异常信息,提示无法找到/About/Hello Silverlight页面。 这是因为在UriMapper对象中,首先定义{pagename}的映射地址,在发出/About页面请求时,导航框架映射机制将首先匹配 {pagename},如果匹配成功,也就不再继续向下面的规则查询匹配。而<uriMapper:UriMap@R_403_6817@ Uri="/{pagename}" MappedUri="/VIEws/{pagename}.xaml"/>和

<uriMapper:UriMap@R_403_6817@ Uri="/About/{parameter}" MappedUri="/VIEws/About.xaml?parameter={parameter}"/>相比较而言,更加具有通用性,所以正确顺序应该是从局部到全局的方向,才能够正确映射URI页面。

 

@H_403_9@



Silverlight Navigation框架URI映射机制技巧提示

 

导航框架Uri映射路径允许设置为空值,设置空值时可以创建一个初始化页面,在第一次运行时映射将指向该初始化页面,同时也可以防止在Uri映射出现空值时返回异常。 例如,修改Home页面URI映射规则如下:

 

 

< uriMapper:UriMap@R_403_6817@  Uri =""  MappedUri ="/VIEws/Home.xaml" />

 

 

每次运行项目,Home页面都会作为默认首页载入。

 

在不使用Uri空值映射时,建议在Frame.NavigationFrailed事件中控制导航框架异常处理。例如,当用户重复使用导航后退功能,直到导航第一个页面时为用户设置提示信息,避免出现异常 *** 作。

 

Silverlight Navigation导航框架URI映射机制就讲到这里,下一篇,将通过导航框架传参功能,理解URI映射机制的应用。

 

本篇源代码

 

 

Silverlight实例教程系列 - Silverlight Validation验证实例

Silverlight实例教程系列 - Silverlight Out-of-Browser实例

Silverlight实例教程系列 - Expression Blend实例中文教程

 

欢迎大家加入“专注Silverlight”QQ技术群,欢迎大家加入一起学习讨论Silverlight&WPF&WIDNows Phone开发技术。  22308706(一群) 超级群500人  37891947(二群) 超级群500人  100844510(三群) 高级群200人  32679922(四群) 超级群500人  23413513(五群) 高级群200人  32679955(六群) 超级群500人  61267622(七群) 超级群500人  88585140(八群) 超级群500人  128043302(九群 企业应用开发推荐群) 高级群200人  101364438(十群) 超级群500人  68435160(十一群 企业应用开发推荐群)超级群500人

@H_897_502@ 总结

以上是内存溢出为你收集整理的Silverlight实例教程 - Navigation导航框架URI映射机制全部内容,希望文章能够帮你解决Silverlight实例教程 - Navigation导航框架URI映射机制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1074700.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存