WPF、Prism、MEF。モジュール内にリージョンアダプターを登録しますか?
-
29-10-2019 - |
質問
モジュール内にリージョンアダプターを登録することはできますか?
Shell.xamlのContentControlがリージョン "MainRegion"に設定されており、現在AvalonDockコントロールを含むモジュールが設定されています。現在、シェルアプリにAvalonDockリージョンアダプターがありますが、モジュールに配置して登録したいと思います。このプログラムを柔軟に保ち、AvalonDock以外のものを使用することにした場合、シェルアセンブリを変更せずに(avalondock領域アダプターを削除して)別のモジュールを簡単に使用できるようにします。
このようなことが可能だと思います。誰かが以前にこれをしたことがありますか?
現在のブートストラッパーには次のようなものがあります: ジェネラコディセタグプレ
これは、シェルブートストラッパーの代わりにモジュールで実行したいことです。
解決
回答はcodeplex http://compositewpf.codeplex.com/discussions/250892 からのものです。
あなたが説明しているシナリオは 可能。カスタムリージョンですが アダプターは登録することを目的としています RegionAdapterMappingsの ブートストラップの ConfigureRegionAdapterMappingsメソッド、 カスタムを登録することが可能です モジュール内からのリージョンアダプタ。
たとえば、 RegionAdapterMappingsへの参照 Moduleクラスで コンストラクタインジェクション、および呼び出し そこにRegisterMappingメソッド。これは 名前のクラスがあるので可能 MefRegionAdapterMappings、これ RegionAdapterMappingsをとしてエクスポートします 共有エクスポート。あなたがする必要があることに注意してください 可能性のあるタイミングの問題を認識している これにより発生します。あなたは カスタムマッピングを登録するように注意してください リージョンを作成する前に そのアダプタを使用します。