我正在创建一个WPF应用程序,我有3个窗口(MainWindow,Window2和Window3)。当我启动项目时,在加载我的MainWindow之后立即加载Window2。当我单击某个Button时,将打开Window3
Window3 w3 = new Window3(this, this.window2);
w3.ShowDialog();但是我不能做一些事情(点击控制等)在Window2中,我知道ShowDialog()方法会禁用其他打开窗口,但在Window2中是否可以使用这些控件进行访问。当Window3打开的时候,我怎么才能使用Window2的功能呢?
发布于 2017-05-04 15:29:09
您可以访问System.Windows.Application静态类的Windows集合,以获得当前打开的所有窗口的列表。然后,您可以迭代集合,并根据类型或其他条件查找您的窗口。一种方法是:
var window3 = Application.Current.Windows.OfType<Window3>().FirstOrDefault();编辑:
在对该问题的评论中,您指出您正在使用w3.Show()方法打开窗口。以非模式方式打开窗口。而在编辑问题之后,w3.ShowDialog()以模式方式打开窗口。您可以在MSDN上了解有关模式窗口的更多信息
当函数需要来自用户的其他数据才能继续时,函数会显示一个模式对话框。因为该函数依赖于模式对话框来收集数据,所以模式对话框还防止用户在应用程序保持打开状态时激活应用程序中的其他窗口。
因此,为了能够在窗口之间切换焦点,它们应该是非模式,并使用Show方法而不是ShowDialog方法打开。
https://stackoverflow.com/questions/43775767
复制相似问题