如何在模块中使用棱镜导航多个视图
本文关键字:导航 棱镜 视图 模块 | 更新日期: 2023-09-27 18:09:43
我是Prism的新手,所以需要一些视图之间导航的帮助在我的项目中,我只有4个视图,所以我在一个模块中创建了所有视图。我已经创建了shell和bootstrapper。我需要做的是,我需要将一些数据从一个视图传递到另一个视图(例如,第一个视图有员工列表,我选择一个员工,然后单击Button以获取该员工的详细信息)。目前我正在使用ViewModel第一方法'
_container.RegisterType<DashboardView>();
_container.RegisterType<PrepareRunView>();
_container.RegisterType<IDashboardViewViewModel, DashboardViewViewModel>();
_container.RegisterType<IPrepareRunViewViewModel, PrepareRunViewViewModel>();
_regionManager.RegisterViewWithRegion(RegionNames.MainRegion, typeof(DashboardView));
_regionManager.RegisterViewWithRegion(RegionNames.MainRegion, typeof(PrepareRunView));
- 在这种情况下,我如何做视图之间的导航和传递数据?
- 我需要在模块类初始化函数中指定什么?
此外,在模块类中,当我为同一区域注册两个视图时,我能够看到两个视图,所以我也需要激活和停用我的视图。
Thanks in advance
第一个视图(选择员工的视图)的视图模型需要一个对Prism的IRegionManager对象的引用。导航到第二个视图,并像下面这样传递一些数据,很像URL中的查询字符串值:-
var uriQuery = new UriQuery();
uriQuery.Add("empid", "123");
// Add more name/value pairs if you wish!
var viewName = "your_view_name" + uriQuery;
_regionManager.RequestNavigate("your region name", viewName);
可以看到,通过指定视图名称导航到视图。为此,您需要将您的视图以的名称注册到您的IoC容器中(如何做到这一点取决于您使用的容器)。
在你要导航到的视图的视图模型中,实现inavationaware接口:-
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return true;
}
public void OnNavigatedFrom(NavigationContext navigationContext)
{
}
public void OnNavigatedTo(NavigationContext navigationContext)
{
// This will be called whenever the view is navigated to.
// Extract the querystring value(s).
var employeeId = navigationContext.Parameters["empid"];
.. etc..
}
您可以使用事件聚合器进行通信
http://msdn.microsoft.com/en-us/library/ff921122.aspx