どのように私は、その初期化後のモジュールの表示を有効化/無効化することができますか?

StackOverflow https://stackoverflow.com/questions/360378

  •  21-08-2019
  •  | 
  •  

質問

これは、複合アプリケーションWPFのためのガイダンス、又はプリズムに関する。

私は自分の殻に一つの「MainRegion」を持っています。私の様々なモジュールは、このメイン領域にロードされます。私は、メニューに利用可能なモジュールのリストを移入し、ロードするためにそれらを選択することができます。私はメニューのクリックでます:

var module = moduleEnumerator.GetModule(moduleName);
moduleLoader.Initialize(new[] { module });
初期化()モジュールのメソッドが実行されるため、

が初めてではすべて、[OK]を動作しますが、Module1を、モジュール2およびモジュール3が初期化された後、私は再びモジュール2をロードするためにクリックすると、何も起こりません。

私の質問:?そのinitializeメソッドが実行された後にどのように私は、オンデマンドでのモジュールをアクティブにすることができます。

あなたの助けをありがとう!

役に立ちましたか?

解決

あなたが実際にモジュールを活性化しません。あなたは地域のビューをアクティブにします。この記事での読み取りを取ります。

Initializeメソッドは、一度だけ任意のモジュールのためにと呼ばれています。あなたは、私が推測するLoadModuleのが原因Initilalize方法は、地域との見解を登録しているという事実によるものであり、呼び出すときにモジュール内のビューを見ているという事実が起動されます。これは、ビューをアクティブにします。あなたが複数のビューを持っていた場合は、最後に登録さがアクティブ1になります。

あなたは地域のActivateメソッドを呼び出す必要がビューをアクティブにする(仮定IUnityContainerとIRegionManager注入さ)...

// Get a view from the container.
var view = Container.Resolve<MyView>();

// Get the region.
var region = RegionManager.Regions["MyRegion"];

// Activate the view.
region.Activate(view);

地域コントロールの種類に応じて、これはそこにあるビューを置換するかまたはそれに追加します。

他のヒント

あなたは地域のRemoveメソッドを呼び出すことにより、ビューを削除することができます。

public void RemoveViewFromRegion(string viewName, string regionName, object defaultView)
    {
      IRegion region = regionManager.Regions[regionName];
      object view = region.GetView(viewName);
      region.Remove(view);
      region.Activate(defaultView); 
    }

あなたは、あなたの地域になりますContentControlにする必要があります。そして、あなたは、この地域にすべてのモジュールを追加する必要があります。あなたがメニューをクリックすると、あなたが特定のモジュールを活性化させるために、地域のアクティベート(...)メソッドを使用する必要があります。

これはあなたがモジュールをアクティブにしたときに、それが重なっすることができる他のモジュールがVisibility.Collapsedに設定されている意味するのでしょうか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top