2012-08-06 54 views
0

MEF + DirectoryCatalog +按需如何看一个新的副本添加到自定义的Tabcontrol的壳呢?

我在ModuleB有一个代码初始化():

this.regionManager.AddToRegion("TabRegion", new Views.Container()); 
this.regionManager.AddToRegion("TabRegion", new Views.Container()); 

并点击壳牌事件:

modulemanager.LoadModule("ModuleB"); 

结果我看到在2个标签外壳tabcontrol

对我来说问题是再次调用:

this.regionManager.AddToRegion("TabRegion", new Views.Container()); 

如何做到这一点? 非常感谢

PS 我试过在网上找到解决方案,但我想我的问题是不正确的。

+2

它是更好,如果你让你的解决方案的一个答案,然后将其标记为答案(点击空心检查米方舟)。 – Dialecticus 2012-08-09 13:31:20

+0

:)它是惊喜给我,有人在编辑我的帖子!谢谢,我会顺便编辑一些代码风格。 – EChip 2012-08-09 16:51:23

+0

stackoverflow被设置为具有良好的社区维护问题和答案,所以任何人都可以编辑任何帖子(尽管如果他们做了一个错误的编辑,其他人会撤消它)。 – mydogisbox 2012-08-10 11:46:42

回答

0

如果此代码被称为只有从ModuleB构造函数(或从一些嵌套的方法),那么唯一的办法是创建ModuleB的另一个实例。这里有文章可以帮助你:Dynamic Part Instantiation in MEF

但是如果你能够作出这样的方法静态的,您可以稍后再为你需要把它作为MENY倍。

0

使用EventAggregator:

  1. 与 PublishModuleAgainer创建基础建设项目:CompositePresentationEvent类
  2. 点导入构造函数初始化壳牌在运行时

    public Shell(IEventAggregator _eventaggregator); 
    
  3. 呼叫

    eventaggregator.GetEvent().Publish("STOCK0"); 
    
  4. 在初始化()模块的预订事件

    eventaggregator.GetEvent().Subscribe(CreateView); 
    
  5. 只需创建行动CreateView的,并呼吁add2region里面:

    this.regionManager.AddToRegion("TabRegion", new Views.Container()); 
    

链接到同样的问题,答案Loading a prism module view from the shell, using MEF

+0

请不要删除答案的链接! – EChip 2012-08-10 05:46:31

相关问题