【发布时间】:2012-10-15 16:57:20
【问题描述】:
我有一个使用 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("")。发现无法重新加载模块的信息,表示模块只有在第一次点击“显示”按钮时才会加载,但是如何更新视图上的数据呢?
【问题讨论】:
-
可能只是我,但你的问题有点难以理解。尝试将其分成几段,并添加更多关于如何获取数据的详细信息。