PRISMを使用したWPFプロジェクトがあります。私のブートストラッパーには、次のコードがあります。
protected override DependencyObject CreateShell()
{
Form1 form1= new Form1();
Form2 form2= new Form2();
var mainWindow = new MainWindow();
mainWindow.Show();
mainWindow.Activate();
RegionManager.SetRegionManager(form1, this.Container.Resolve<IRegionManager>());
RegionManager.SetRegionManager(form2, this.Container.Resolve<IRegionManager>());
RegionManager.UpdateRegions();
return mainWindow;
}
protected override IModuleCatalog GetModuleCatalog()
{
var moduleCatalog = new ModuleCatalog();
moduleCatalog.AddModule(typeof(MainModule));
moduleCatalog.AddModule(typeof(Form1Module), InitializationMode.OnDemand);
moduleCatalog.AddModule(typeof(Form2Module), InitializationMode.OnDemand);
return moduleCatalog;
}
MainFormにはListBox
ボタンがあります。でアイテムを選択してListBox
[表示]ボタンをクリックすると、form1にデータが表示され、メインウィンドウが非表示になります。Form1には[メインに移動]ボタンもあります。ユーザーがクリックすると(フォームform1.Hide()
1をデータで非表示にします)、mainWindow.Show()
(再びメインウィンドウを表示します)。メインウィンドウで、ユーザーはから別のアイテムを選択して[ListBox
表示]をクリックします。フォーム1が表示されます。ユーザーがmainWindowで新しい項目を選択したが、form1は古いデータ(form1のモジュールが初めてロードされたときに表示されたデータ)を表示するため、新しいデータを表示します。
例-mainWindowに、ある会社のオフィスのリストを含むListBoxがあり、「Office1」を選択して「Show」をクリックすると、このmainWindowが非表示になり、form1が読み込まれ、form1に「Office1」の経費リストが表示されます。mainWindowで別のオフィスを選択すると、たとえば「Office2」form1には「Office2」の経費が表示されますが、「Office1」の経費が表示されます。
ユーザーがmainWindowの[表示]ボタンをクリックすると、moduleManager.LoadModule( "")を実行します。モジュールをリロードできないという情報を見つけました。これは、初めて[表示]ボタンをクリックしたときにのみモジュールがロードされることを意味しますが、ビューのデータを更新するにはどうすればよいですか?