我有一个带有 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 也有按钮“Go to Main”,当用户单击它时,我会这样做form1.Hide()
(用数据隐藏 form1)和mainWindow.Show()
(再次显示 mainWindow)。在 mainWindow 上,用户从中选择另一个项目ListBox
并单击“显示”-显示 form1,它应该显示新数据,因为用户在 mainWindow 上选择了新项目,但 form1 显示旧数据(第一次加载 form1 的模块时显示的数据)。
示例 - 在主窗口中,我们有一个列表框,其中包含一些公司的办公室列表,我们选择“Office1”并单击“显示”,此主窗口隐藏并加载 form1,form1 显示“Office1”的费用列表。当我在 mainWindow 上选择另一个办公室时,例如“Office2”form1 应该显示“Office2”的费用,但它显示“Office1”的费用。
当用户单击主窗口上的“显示”按钮时,我会执行 moduleManager.LoadModule("")。我发现无法重新加载模块的信息,这意味着模块只有在我们第一次单击“显示”按钮时才会加载,但是我们如何更新视图上的数据呢?