2012-03-01 14 views
0

は、私は二つの領域との見解を持っているインフラプロジェクト、持っている:Registring地域

  • ContentRegion
  • SidebarRegionを

enter image description here

SidebarRegionには問題はありません。なぜなら、これはこのプロジェクトの具体的な見解です。しかし、ContentRegionは別のものですが、私はModuleAModuleBのような別のモジュールを持っています。これらのモジュールには、ContentRegionに表示する必要のあるビューが含まれています。

つまり、インフラストラクチャプロジェクトには汎用ビューが含まれています。その他のモジュールには、表示する必要があるビューが含まれていますContentRegion

私はPrismとUNITYを使用しています。どうすればこのことができますか?私はビューを登録する必要があると思うが、私は失われている。

答えて

1

リージョンマネージャとUnityコンテナをコンストラクタを介してモジュールに渡すことができます。

public class ModuleA : IModule 
{ 
    private readonly IUnityContainer _container; 
    private readonly IRegionManager _regionManager; 

    public ModuleA(IUnityContainer container, IRegionManager regionManager) 
    { 
     _container = container; 
     _regionManager = regionManager; 
    } 

    public void Initialize() 
    { 
     _regionManager.RegisterViewWithRegion("ContentRegion", 
      () => _container.Resolve<NameOfYourView>()); 
    } 
} 

をそして、もちろん、あなたはモジュールが正しくロードされていることを確認する必要がありますが、私はそれがすでに行われていると仮定しています。そして、あなたはそうのように、Initialize方法であなたの意見を登録するには、これらを使用することができます。

+0

いくつかのモジュールを使用しても問題はありませんか?地域が既に登録されているため、エラーとなります。 –

+0

'ModuleA'と' ModuleB'のビューは他の領域を定義していますか?インフラストラクチャプロジェクトで使用したのと同じ名前を使用していますか? –

+0

いいえ、他の地域は定義されていません。モジュールが初期化されるとき、あなたが設定したコードを置くだけで、私はそのエラーを受け取ります。 多分私は、各モジュールがTabControl –