使用PRISM,如何显示另一个模块的视图,并访问其属性以更新其状态?

时间:2010-02-26 14:30:52

标签: c# wpf prism cal

我有两个模块,一个是Header模块,一个是Items模块。

我有一个HeaderDetails视图,其中包含一个名为'ItemsSummaryRegion'的区域。注册此区域以使用Items模块中的视图ItemListView填充区域。

regionManager.RegisterViewWithRegion("ItemsSummaryRegion", typeof(IItemListView));

问题是,如何访问这个自动生成的视图,以便我可以设置它应该显示的项目列表?我想在HeaderDetails视图的ViewModel中设置它。

有谁知道你是怎么做到的?或者可以建议一种更好的方式来显示这些数据?

谢谢。

2 个答案:

答案 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>(); 
     });