0

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

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

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

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

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

谢谢你。

4

2 回答 2

2

如果您的两个模块如此紧密耦合,那么只有一个模块包含两个视图并使用主/详细信息设置它们不是更有意义吗?

此示例显示了与您尝试实现的目标类似的内容: http ://www.tanguay.info/web/index.php?pg=codeExamples&id=105

于 2010-03-01T22:20:11.787 回答
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>(); 
     });
于 2010-02-26T15:05:45.037 回答