使用Prism,如何从另一个模块显示视图,并访问其属性以更新其状态?
题
我有两个模块,一个是标头模块,一个是项目模块。
我有一个HeaderDetails视图,其中包含一个称为“物品SummaryRegion”的区域。该区域已注册,以从项目模块中使用视图ItemListView填充该区域。
regionManager.RegisterViewWithRegion("ItemsSummaryRegion", typeof(IItemListView));
问题是,如何访问此自动生成的视图,以便我可以设置应显示的项目列表?我想在headerDetails视图的ViewModel中设置此功能。
有人知道你是怎么做到的吗?还是可以提出更好的显示此数据的方法?
谢谢你。
解决方案
如果您的两个模块如此紧密地耦合,那么只有一个包含两个视图的模块并使用主/细节设置它们,这是否更有意义。
此示例显示了您要实现的类似内容:http://www.tanguay.info/web/index.php?pg=codeexamples&id=105
其他提示
您应该使用UnityContainer来创建事物,然后调用添加和激活。
public TaskList(IEventAggregator eventAggregator,
IRegionManager regionManager,
IUnityContainer container)
{
_EventAggregator = eventAggregator;
_RegionManager = regionManager;
_Container = container;
}
IItemListVM vm = _Container.Resolve<IItemListVM>();
IItemListView view = new IItemListView(vm);
_RegionManager.Regions["ItemsSummaryRegion"].Add(view);
_RegionManager.Regions["ItemsSummaryRegion"].Activate(view);
这使您可以致电 IRegion.Remove
稍后您想清除该地区。如果您只想在视图中注册一个区域,也可以做到这一点,只需将我的逻辑的最后几行替换为dogendmentViewWithRegion的另一个电话:
_RegionManager.RegisterViewWithRegion("ItemsSummaryRegion",
(x) =>
{
_Container.Resolve<IItemListView>();
});
不隶属于 StackOverflow