2012-08-06 52 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

相關問題