Prism中,页面跳转以及页面之间传递参数(NavigationParameters)

一、页面跳转概述

在Prism中,使用Navigation来进行页面之间的跳转通常需要一下几步:
1. 创建新页面,并且实现INavigationAware接口
2. 使用IRegionManager注册页面
3. 使用NavigationParameters封装页面跳转的参数
4. 使用IRegionManager.RequestNavigate()跳转到目标页面

二、例子

  1. 创建新页面,并且实现INavigationAware接口
    public partial class ContactMainWindowView : UserControl, INavigationAware
    {
        public ContactMainWindowView()
        {
            InitializeComponent();

        }

        #region  INavigationAware

        public void OnNavigatedTo(NavigationContext navigationContext)
        {
        }


        public bool IsNavigationTarget(NavigationContext navigationContext)
        {
            var param = navigationContext.Parameters["Param"] ;
            Console.WriteLine(param?.ToString());
            return true;
        }



        public void OnNavigatedFrom(NavigationContext navigationContext)
        {

        }


        #endregion

    }
  1. 使用IRegionManager注册页面

ServiceLocator.Current.GetInstance<IRegionManager>()
.Regions[RegionNames.ContentRegion].Add(new ContactMainWindowView());
  1. 用NavigationParameters封装参数:

方法一:该方法参数类型可以为object

    var para = new NavigationParameters();
    para.Add("Uri", "ContactMainWindowView");//此处建议将ContactMainWindowView定义为常量
    para.Add("Param", "hello saylor");//key必须为字符串,value可以传递object类型,此处用"hello saylor"

方法二:该方法参数类型可以为string

    var para = new NavigationParameters("Uri=ContactMainWindowView&Param=hello saylor");
  1. 使用IRegionManager.RequestNavigate()跳转到目标页面
ServiceLocator.Current.GetInstance<IRegionManager>()
.RequestNavigate(RegionNames.ContentRegion, para["Uri"].ToString(), para);

三、总结

  1. 使用IRegionManager注册页面时,是new一个新页面(不要多次注册)。并且对应的region会默认显示第一个注册的View。
  2. 使用了ServiceLocator来获取IRegionManager的实例。prism中,默认创建了实例,并进行了注册(依赖注入)。
  3. 用NavigationParameters封装参数,方法二中,构造函数的参数类似于get请求中的参数形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值