1

私はメインの Silverilght プロジェクトと他のモジュールを持っており、Prism を使用して依存性注入のために Unity と一緒にそれらを接着しています。

に依存するモジュールの 1 つがIRegionManagerあり、当然、Unity によって注入されます。

私が実行している問題は、次のようにシェルで2つを宣言したにもかかわらず、取得したのRegionsプロパティにリージョンが含まれていないことです。RegionManager

regions:RegionManager.RegionName="MainRegion"

この動作の理由がわかりません。RegionManagerを使用してシングルトンとして登録しようとしました

Container.RegisterInstance<IRegionManager>(new RegionManager());

団結を離れるだけでなく、これを処理します。しかし、私は同じ結果を得ました:(

私が達成しようとしているのは、特定の領域にビューを挿入してアクティブにすることです。これは、

_regionManager.RegisterViewWithRegion("MainRegion", typeof(MyView));

そのため、「MainRegion」オブジェクト自体を取得して操作する必要があります。

誰かがこれを理解してくれることを願っています。とても感謝しています:)

編集:ビューの検出は問題なく機能することに言及する必要がありますが、のプロパティRegisterViewWithRegionを確認すると、空であることがわかります!RegionsRegionManager

4

1 に答える 1

3

この問題とそれが発生した状況について考えていると、ソフトウェアのほとんどのバグと同様に、問題は私が探していた場所ではないことに気づきました。

私の設定は次のとおりです。まず、Silverlight ビジネス アプリケーション プロジェクト テンプレートから始めました。これにより、MainPageとして使用したShellと、いくつかのビュー (HomeおよびAbout) が得られました。ここで、領域を に配置する代わりに、ShellそれらをHomeビューに配置し、MainPage を一種のマスター ページとして保持します。

これについての私の見解は、Prism が に を設定し、RegionManagerそれShellを必要とする人に (依存性注入コンテナーを使用して) 渡すというものです。このようにIRegionManagerして、モジュールでを要求したときに、Shell実際には領域を含まないものを取得しました (したがって、空のRegionsプロパティ)。

これを解決するために、私がしなければならなかったのは、リージョンを適切な場所である Shellに配置することだけでした。現在、すべてがうまく機能しています。

更新:私の「これに対する見方」は実際には正しいようです:)、これはPrism Documentationからの抜粋です:( Scoped Regionsの下)

プロパティが添付された領域を定義するビューは、親の RegionManager を自動的に継承します。通常、これはシェルウィンドウに登録されているグローバル RegionManagerです。

于 2011-03-21T22:57:37.303 に答える