私はシェルで2つのセクションを宣言したプロジェクトで作業しています。これらのうちの1つは、アイテムがオンデマンドでモジュールをロードし、別のモジュールが要求されたモジュールのビューをロードするために使用されるメニューを配置するために使用されます。あなたは「メニュー」のボタンシリーズ(これが唯一のテスト用です)、私は必要な地域のように動作しますContentControlにして構成されて見ることができるようにPrism v4/MVVM(Unity/WPF) - モジュールを同じ地域にロードする
これは、シェルの設計
<StackPanel Orientation="Vertical" Grid.Column="0" Grid.Row="1">
<Button Content="Home" Height="23" Name="Home" Width="75"/>
<Button Content="Users" Height="23" Name="Users" Width="75"/>
</StackPanel>
<Border Grid.Column="1" Grid.Row="1" Background="WhiteSmoke">
<ContentControl cal:RegionManager.RegionName="MainRegion" Name="MainRegion"/>
</Border>
の一例ですViewsをロードする。
これは私のBootstraperにモジュールを追加する方法の例です:
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
System.Type homeModule = typeof(FieldCollection.Home.HomeModule);
ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
moduleCatalog.AddModule(new ModuleInfo() { ModuleName = homeModule.Name, ModuleType = homeModule.AssemblyQualifiedName, InitializationMode = InitializationMode.OnDemand });
System.Type userModule = typeof(FieldCollection.User.UserModule);
moduleCatalog.AddModule(new ModuleInfo() { ModuleName = userModule.Name, ModuleType = userModule.AssemblyQualifiedName, InitializationMode = InitializationMode.OnDemand });
}
これは、モジュールの初期化方法である:
public void Initialize()
{
this.container.RegisterType<IUserController, UserController>(new ContainerControlledLifetimeManager());
this.regionManager.RegisterViewWithRegion("MainRegion", typeof(Views.UserSummaryView));
}
そしてfinalllyこれは、モジュールが呼び出された方法ですメニューから選択します。
private void User_Click(object sender, RoutedEventArgs e)
{
moduleManager.LoadModule("UserModule");
}
問題は、呼び出された最初のビューだけが領域内に表示されることです。私はあなたの助けのための
おかげ
私がItemsControlを使用すると、すべてのモジュールが同じ領域に表示されますが、一度に表示できるモジュールは1つだけです。 あなたの答えをありがとう – mascab
@mascabそれでは、ContentControlを保存して、上記の詳細をチェックしてください... –