我们在派生自Application类中出来放置响应应用程序事件的代码外,还可以放置一些完成其他任务的代码。
在此之前要知道:
如何获取应用程序的Application对象:
//App是一个继承自Application的类
App app= Application.Current;
比如:在多窗口之间交互时,我们为了在某个窗口中操作另一个窗口,有时会将一部分控件或字段的访问权限设置为公开。这样就增强了窗口之间的耦合性。随着窗体间交互的增强,我们将面临极大的困扰。
所以,我们可以在自定义应用程序类中保存窗口的引用,从而使一个窗口可以访问到另一个窗口:
- 在App.xaml.cs中定义一个泛型集合
- 当创建一个新窗口的时候,将新窗口对象加入到集合中
- 在代码的任意地方都可以通过遍历集合来操作窗口了
private List<Window> documents = new List<Window>(); public List<Window> Docunmets { get { return documents; } set { documents = value; } } public App() { this.ShutdownMode = ShutdownMode.OnExplicitShutdown; MainWindow window = new MainWindow(); this.documents.Add(window); this.StartupUri = new Uri("MainWindow.xaml",UriKind.Relative); }
在其它窗口中使用:
//获取应用程序的Application对象 Application application = Application.Current; List<Window> windows= ((App)Application.Current).Docunmets; for (int i = 0; i < windows.Count; i++) { MessageBox.Show("已经激活的窗口有:"+windows[i].Title); }