windows phone URI映射

UriMapping用于在一个较短的URI和你项目中的xaml页的完整路径定义一个映射(别名)。通过使用别名URI,开发者可以在不改变导航代码的情况下来改变一个项目的内部结构。该机制还提供了一个简单的方法以参数在页面之间传递数据,并可以导航到使用参数动态创建的页面。

一、代码映射URI

主要操作时对app.xaml.cs中对RootFrame的属性UriMapper进行赋值。

在app.xaml.cs中添加方法

/// <summary>
        /// 创建UriMapping对象
        /// </summary>
        /// <param name="uri">请求的uri</param>
        /// <param name="mappeduri">导航到的uri</param>
        /// <returns></returns>
        public UriMapping CreateUriMapping(string uri, string mappeduri)
        {
            return new UriMapping() { 
                MappedUri=new Uri(mappeduri,UriKind.Relative),
                Uri=new Uri(uri,UriKind.Relative)
            };
        }

并在InitializePhoneApplication()方法初始化后对RootFrame的UriMapper属性赋值

UriMapper mapper = new UriMapper();
            //简单的映射
            mapper.UriMappings.Add(CreateUriMapping("Test", "/TestPage.xaml"));
            //传递参数
            mapper.UriMappings.Add(CreateUriMapping("TestParam/{value1}/{value2}", "/TestPageParam.xaml?id={value1}&name={value2}"));
            //导航到使用参数动态创建的页面 NavigationService.Navigate(new Uri("Test1",UriKind.Relative)) 访问TestPage1.xaml
            mapper.UriMappings.Add(CreateUriMapping("Test{num}", "/TestPage{num}.xaml"));
            RootFrame.UriMapper = new UriMapper();
            RootFrame.UriMapper = mapper;

二、使用XAML映射URI

首先要添加命名空间

xmlns:appnavigation="clr-namespace:System.Windows.Navigation;assembly=Microsoft.Phone"

在<Application.Resources>中添加如下代码

<appnavigation:UriMapper x:Key="UriMapper">
            <appnavigation:UriMapper.UriMappings>
                <appnavigation:UriMapping Uri="Test" MappedUri="/TestPage.xaml" />
                <!-- 传递参数是,如传递多个参数时,许将 & 转义为 &amp; -->
                <appnavigation:UriMapping Uri="TestParam/{value1}/{value2}" MappedUri="/TestPageParam.xaml?id={value1}&amp;name={value2}"/>
                <appnavigation:UriMapping Uri="Test{num}" MappedUri="/TestPage{num}xaml"/>
            </appnavigation:UriMapper.UriMappings>
        </appnavigation:UriMapper>

最后在app的构造函数中对RootFrame的UriMapper属性赋值,InitializePhoneApplication()方法后

RootFrame.UriMapper = Resources["UriMapper"] as UriMapper;

 

转载于:https://www.cnblogs.com/my-tzc/p/3500868.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值