还是从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
,这让我有点兴奋。
处理这样的表格最有效/行业标准的方法是什么?
答案 0 :(得分:1)
我只会检查Application.Current.Windows
是否包含您窗口的实例。如果是,那么你给它焦点,如果没有,那么你创建一个实例。
答案 1 :(得分:0)
我不确定我是否理解你是如何正确打开窗户的。但是,如果您只想在应用程序的整个运行时间内拥有一个窗口实例,则可以使用the Singleton pattern。基本上,window类有一个静态属性,它保存唯一的实例。
如果你不需要在窗口中保留任何状态,你可以在每次想要显示它时创建它的新实例。