はい、PRISM がお手伝いします。
ここで言及する価値のある多くのこと。
RE: Prism は私に適していますか?
モジュールをオンデマンドでロードできます。PRISM には実行時にモジュールをロードする機能があるため、この場合、Shell と ModuleA を使用して上記のソリューションを起動するとします。次に、ユーザーがイベント (メニューの選択など) をトリガーすると、ModuleB を動的にロードして、それをプレイに挿入できます。ただし、明確にするために、ModuleB が他のモジュールなどに独自の依存関係を持たないことを確認する必要があるため、ここで実際に座って下調べを行う必要があります (通常、インフラストラクチャ モジュールを使用するのが賢明です。私はテクニックを使用しました)。ここでは、モジュールのマニフェストがあり、絶対的な依存関係をリストする XML で検索し、最初にそれらがロードされていることを確認してから、ModuleB をロードします)。
PRISM ヘルプ ドキュメント (開発活動) を介してオンデマンドでモジュールをロードするを参照してください。リモートダウンロード用のモジュールの準備も参照してください
RE: 実行時にビューを挿入する
メニューを介してリージョンにビューを挿入するのは、IRegionManager にアクセスして追加する単純なケースです。これを行うには、使用している ViewModel/Presenter/Controller のコンストラクターで次のことを確認してください。
MyConstructor(IRegionManager regionManager, IUnityContainer container)
PRISM と同様に、必要なオブジェクトを構築物にほとんど追加できます。PRISM は、時間と予算内でそこに到着することを保証します (へへ)。
そこから、ビューを追加する際に取る通常のアプローチです...例:
IMyViewInstance myViewInstance = this.container.Resolve<IMyViewInstance>();
IRegion myRegion = this.regionManager.Regions["YourRegion"];
myRegion.add(myViewInstance);
myRegion.Active(myViewInstance);
そして、すべてが集まるはずです!:)
ノート:
- Construct でコンテナと regionManager へのローカル参照を設定してください (this.container = container など)。
- 上記の名前空間が存在する場所がわからない場合は、たとえば IUnityContainer を右クリックし、Visual Studio で解決します (右クリック メニュー)。
- Add ロジックをメニュー イベントに配置するか、中央のメソッドを使用します。
Scott Barnes - マイクロソフトのリッチ プラットフォーム プロダクト マネージャー。