访问WPF中不同位置的表单

时间:2011-09-26 10:40:56

标签: c# wpf global

还是从win form程序员那里习惯了WPF。我在应用程序中有多个表单可以从多个位置访问,因此我需要将表单保持为“全局”,因为我不确定更好的术语。

例如“详细信息”可以从“主菜单”打开,但也可以在“搜索”中从网格打开,我希望从搜索返回的详细信息显示在“详细信息”页面中如果它是从主菜单中预先打开的。

我遇到了Application.Current.Properties,并且已经开始在其中存储一些表单,但设置完全没错:

Vehicle vehicleForm = new Vehicle();
Application.Current.Properties["frmVehicle"] = vehicleForm;

然后访问它:

if (Application.Current.Properties["frmVehicle"] == null)
            Application.Current.Properties["frmVehicle"] = new frmVehicle();

Vehicle vehicleFrm = (Vehicle)Application.Current.Properties["frmVehicle"];
vehicleFrm.Show();
vehicleFrm.Activate();

我刚刚发现了Application.Current.Windows,这让我有点兴奋。

处理这样的表格最有效/行业标准的方法是什么?

2 个答案:

答案 0 :(得分:1)

我只会检查Application.Current.Windows是否包含您窗口的实例。如果是,那么你给它焦点,如果没有,那么你创建一个实例。

答案 1 :(得分:0)

我不确定我是否理解你是如何正确打开窗户的。但是,如果您只想在应用程序的整个运行时间内拥有一个窗口实例,则可以使用the Singleton pattern。基本上,window类有一个静态属性,它保存唯一的实例。

如果你不需要在窗口中保留任何状态,你可以在每次想要显示它时创建它的新实例。