我有两个模块,一个是Header模块,一个是Items模块。
我有一个HeaderDetails视图,其中包含一个名为'ItemsSummaryRegion'的区域。注册此区域以使用Items模块中的视图ItemListView填充区域。
regionManager.RegisterViewWithRegion("ItemsSummaryRegion", typeof(IItemListView));
问题是,如何访问这个自动生成的视图,以便我可以设置它应该显示的项目列表?我想在HeaderDetails视图的ViewModel中设置它。
有谁知道你是怎么做到的?或者可以建议一种更好的方式来显示这些数据?
谢谢。
答案 0 :(得分:2)
如果你的两个模块紧密耦合,那么只有一个模块包含两个视图并用主/细节设置它们就没有意义了。
此示例显示了与您要实现的内容类似的内容: http://www.tanguay.info/web/index.php?pg=codeExamples&id=105
答案 1 :(得分:0)
您应该使用unityContainer创建内容,然后调用Add和Activate。
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
。如果你只是想用一个视图注册一个区域,你也可以这样做,只需用我对RegisterViewWithRegion的另一个调用替换我逻辑的最后几行:
_RegionManager.RegisterViewWithRegion("ItemsSummaryRegion",
(x) =>
{
_Container.Resolve<IItemListView>();
});