4

Prismでアプリケーションを書いています。ユーザーコントロールがあり、2つの<ContentControl>コントロールが含まれています。これらの両方にリージョンが割り当てられています。Windowユーザーコントロールは、を使用して表示されているでホストされていShowDialog()ます。
ビューディスカバリーを使用してビューの1つを領域に追加し、もう1つはその領域にビューを挿入します。ビュー検出は正常に機能します。ただし、他の領域を参照してビューを挿入しようとすると、例外が発生します。

KeyNotFoundExceptionリージョンマネージャーにMyRegion
リージョン が含まれていません。

RegionManagersリージョンを見ると、ビューを挿入しようとしているリージョンも、ビュー検出を使用しているリージョンも存在しません。

シェルとは別のウィンドウにいることは重要ですか?RegionManagerは1つしかないと思いましたが、ビュー検出が機能するためには2つ必要です...?それとも、アプリケーションのライフサイクルの後半で2つの新しいリージョンが作成されているためですか?それとも、新しいリージョンが私のMainRegion内にないためですか?

編集:
いくつかの掘り下げを行った後、Regionが作成されたように見えますが、RegionManagerのインスタンスが見つからないため、追加されません。手がかりはありますか?

4

1 に答える 1

8

並べ替えました。プレゼンタークラスのコンストラクターにリージョンマネージャーを登録する必要がありました。
そうすれば、新しいウィンドウのリージョンでグローバルリージョンマネージャーを見つけることができます。

RegionManager.SetRegionManager(view as DependencyObject, regionManager);

于 2010-01-29T17:09:09.377 に答える