0

MEF+DirectoryCatalog+OnDemand

ModuleB にコード Initialize() があります。

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

シェルでイベントをクリックします。

modulemanager.LoadModule("ModuleB");

その結果、シェルのタブコントロールに 2 つのタブが表示されます

私にとって問題は、もう一度電話することです:

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

どうやってするか?どうもありがとう

PS Webで解決策を見つけようとしましたが、私の質問は適切ではないと思います。

4

2 に答える 2

0

このコードがModuleB コンストラクター (またはネストされたメソッド) からのみ呼び出される場合、唯一の方法は ModuleB の別のインスタンスを作成することです。これはあなたを助けるかもしれない記事です:MEFでの動的部品インスタンス化

しかし、そのメソッドを静的にすることができれば、後で必要な回数だけ呼び出すことができます。

于 2012-08-06T10:07:16.123 に答える
0

EventAggregator の使用:

  1. PublishModuleAgainer:CompositePresentationEvent クラスを使用してインフラストラクチャ プロジェクトを作成します。
  2. Point コンストラクターをシェルの初期化にインポートする

    public Shell(IEventAggregator _eventaggregator);
    
  3. 実行時に呼び出す

    eventaggregator.GetEvent().Publish("STOCK0");
    
  4. モジュールの Initialize() でイベントにサブスクライブします

    eventaggregator.GetEvent().Subscribe(CreateView);
    
  5. Action CreateView を作成し、その中で add2region を呼び出すだけです。

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

同じ質問と回答へのリンクMEF を使用してシェルからプリズム モジュール ビューを読み込む

于 2012-08-09T14:48:41.043 に答える