SilverLight 4 アプリケーションで PRISM を使用しています。一部の地域に登録されたビューが表示されないという問題があります。
起動時にモジュールをロードするとき、次のようにいくつかのビューをリージョンに登録します。
RegionManager.RegisterViewWithRegion("MyRegion1", typeof(IMySubView1));
RegionManager.RegisterViewWithRegion("MyRegion2", typeof(IMySubView2));
IMyView と呼ばれるインターフェイスを実装するビューがあります。xaml には、次のようにグリッドで定義された領域を持つ 2 つのコンテンツ コントロールがあります。
<ContentControl Regions:RegionManager.RegionName="MyRegion1" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Grid.Row="0" Grid.RowSpan="1"/>
<ContentControl Regions:RegionManager.RegionName="MyRegion2" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Grid.Row="1" Grid.RowSpan="1"/>
ビューをメイン領域に追加するために、2 つの異なる方法を試しました。どちらもビューを追加し、ボタンなどの基本要素が表示されますが、ビューで定義された領域は関連するビューで埋められません。
方法 1:
object obj = _container.Resolve<IMyView>();
IRegion mainRegion = _regionManager.Regions["MainViewRegion"];
IRegionManager scoped = mainRegion.Add(obj, "test", true);
mainRegion.Activate(obj);
// Enabling the following call, it will fail saying the region MyRegion1 does not exist. Feels like it should?
// IRegion myRegion = scoped.Regions["MyRegion1"];
方法 2:
object obj = _container.Resolve<IMyView>();
_regionManager.AddToRegion("MainViewRegion", obj);
_regionManager.Regions["MainViewRegion"].Activate(obj);
xaml ファイルで定義された領域が登録されていないように感じます。そのため、登録されたビューが表示されません。
MainViewRegion は、TabControl のシェルで次のように定義されます。
<TabControl Margin="8,0,8,8" Regions:RegionManager.RegionName="MainViewRegion">
私の問題を解決するための提案は大歓迎です!