Application类-多窗口交互

我们在派生自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);
}
上一篇:iOS 系统应用"文件",如何查看其他应用的文件


下一篇:Unable to open debugger port (127.0.0.1:55119): java.net.SocketException "Socket closed"