Prism框架--页面跳转以及页面之间传递参数(NavigationParameters)
一、页面跳转概述
在Prism中,使用Navigation来进行页面之间的跳转通常需要一下几步:
- 创建新页面,并且实现INavigationAware接口
- 使用IRegionManager注册页面
- 使用NavigationParameters封装页面跳转的参数
- 使用IRegionManager.RequestNavigate()跳转到目标页面
一、页面跳转概述
在Prism中,使用Navigation来进行页面之间的跳转通常需要一下几步: - 创建新页面,并且实现INavigationAware接口
- 使用IRegionManager注册页面
- 使用NavigationParameters封装页面跳转的参数
- 使用IRegionManager.RequestNavigate()跳转到目标页面
二、例子
创建新页面,并且实现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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
使用IRegionManager注册页面
ServiceLocator.Current.GetInstance()
.Regions[RegionNames.ContentRegion].Add(new ContactMainWindowView());
1
2
3
4
用NavigationParameters封装参数:
方法一:该方法参数类型可以为object
var para = new NavigationParameters();
para.Add("Uri", "ContactMainWindowView");//此处建议将ContactMainWindowView定义为常量
para.Add("Param", "hello saylor");//key必须为字符串,value可以传递object类型,此处用"hello saylor"
1
2
3
方法二:该方法参数类型可以为string
var para = new NavigationParameters("Uri=ContactMainWindowView&Param=hello saylor");
1
2
使用IRegionManager.RequestNavigate()跳转到目标页面
ServiceLocator.Current.GetInstance()
.RequestNavigate(RegionNames.ContentRegion, para[“Uri”].ToString(), para);
1
2
3
三、总结
使用IRegionManager注册页面时,是new一个新页面(不要多次注册)。并且对应的region会默认显示第一个注册的View。
使用了ServiceLocator来获取IRegionManager的实例。prism中,默认创建了实例,并进行了注册(依赖注入)。
用NavigationParameters封装参数,方法二中,构造函数的参数类似于get请求中的参数形式。
相关文章
- Android平台dalvik模式下java Hook框架ddi的分析(2)--dex文件的注入和调用
- Android平台下Dalvik层hook框架ddi的研究
- Hadoop框架:HDFS读写机制与API详解
- Java 集合框架
- 基于kubernetes调度框架的自定义调度器实现
- 单元测试框架实现原理,简简单单讲清楚
- JAVA单元测试框架-2--testng.xml讲解
- ios学习--第三方框架-MBProgressHUD以及扩展
- 滑动窗口算法框架(Java版)秒杀力扣题(76、567、438、3、485)
- reactjs--创建webpack框架
- golang 项目框架开发
- Core Graphics框架 利用Quartz 2D绘图
- 在计算框架MindSpore中手动保存参数变量(Parameter 变量)—— from mindspore.train.serialization import save_checkpoint
- 【总结】编写自己的JDBC框架
- Notepad++—英文版卡框架翻译
- CI框架--事务
- laravel框架总结(十三) -- redis使用
- laravel框架总结(十) -- 返回值
- laravel框架总结(七) -- 数据库操作
- 利用MyEclipse配置S2SH三大框架篇-Spring配置
- 常用的移动端框架
- (42)JS运动之多物体框架--多个div变宽
- Odoo 15 前端框架 OWL官方文档 中文版--边学边练笔记2
- Odoo 15 前端框架 OWL官方文档 中文版--边学边练笔记1
- 基于TTCN-3测试系统的逆向模型发现框架的设计
- 非常好的web弹出层框架 -- layer
- 框架设计:实现数据的按需更新与插入的改进--用数据对比进一步说明
- RPC调用框架比较分析--转载
- 在实践中学习Hadoop计算框架(01)--从0到Hadoop版“Hello word”:WordCount 的实现