我正在研究一个WPF PRISM应用程序,它具有以下结构(我已简化以更好地解释而无需额外的图层)。我使用Unity作为我的DI/IOC在视图之间导航WPF PRISM应用程序
- AppMain - 引导程序
- 桂 - 视图和视图模型
- 数据 - 使用EF。
在桂,我有如下看法名称:
- 首页
- EmployeesView
- OrdersView
- 报告
我在外壳三个区域。 MainRegion - 主要内容 TopRegion - 导航菜单 BottomRegion - 状态栏
我使用下面的方法来注册视图
IRegion region = _regionManger.Regions[RegionNames.MainRegion];
var mainView = _container.Resolve<Home>();
region.Add(mainView, ViewNames.HomeViewName);
region.Activate(mainView);
第一激活发生在模块初始化方法顶部区域,主要和底部。
之后,我点击按钮时激活其他视图。这只是现在的代码。示例代码在这里:
IRegion region = _regionManger.Regions[RegionNames.MainRegion];
var reportView = region.GetView(ViewNames.ReportsViewName);
if (reportView == null)
{
reportView = _container.Resolve<ReportsView>();
region.Add(reportView, ViewNames.ReportsViewName);
region.Activate(reportView);
}
else
{
region.RequestNavigate(ViewNames.ReportsViewName);
}
问题1:如何可以做到这一点还是我做的方式是罚款的任何建议。 顶部菜单包含主页,员工,订单,报告按钮。
在主页中,我最近将员工在datagrid中的订单视为只读订单。 我想双击导航到OrderView并将选定的订单传递给用户。 PROBLEM2我不确定在哪里做导航。
PROBLEM3:的另一个问题是,如果设置RegionMemberLifeTime的keepAlive假,INavigationAware方法不火。如果我没有将KeepAlive设置为false,则页面不会刷新,因为视图模型没有被调用。
我需要页面刷新时,它是导航到,而不是陈旧,并处理任何确认提示给用户时,视图导航离开它。
非常感谢您的帮助。
我上面关于regionamemberlifetime的评论是错误的。我认为我的视图名称拼写错误。我也看了棱镜快速启动和PRISM的样品。导航是在视图模型中完成的。一旦我明白了,我会纠正我的发帖和解决方案。谢谢 – isakavis 2013-02-12 16:18:46