WPF - 单击按钮聚焦第二个窗口

时间:2017-05-04 06:49:02

标签: wpf window focus

我正在创建一个WPF应用,我有3个Windows(MainWindowWindow2Window3)。当我在加载Window2后立即启动项目MainWindow时。当我点击Button时,Window3会打开

Window3 w3 = new Window3(this, this.window2);
w3.ShowDialog();

但我无法在Window2中执行操作(单击控件等),我知道ShowDialog()方法正在禁用其他打开的Windows,但是有可能使用这些控件进行访问窗口2。当Window2打开时,如何才能访问Window3的功能? PS。(很抱歉问了一个愚蠢的问题,但我是WPF的初学者)!

1 个答案:

答案 0 :(得分:0)

您可以访问System.Windows.Application静态类的Windows集合,以获取所有当前打开的窗口的列表。然后,您可以按类型或其他条件迭代集合并查找窗口。一种方法是:

var window3 = Application.Current.Windows.OfType<Window3>().FirstOrDefault();

编辑:

在对该问题的评论中,您声明使用w3.Show()方法打开了窗口。这会以非模态的方式打开窗口。在编辑问题后,w3.ShowDialog()以模态的方式打开窗口。 您可以在MSDN

了解有关模态窗口的更多信息
  

当函数需要来自用户的其他数据才能继续时,函数会显示模式对话框。由于该函数依赖于模式对话框来收集数据,因此模式对话框还可以防止用户在应用程序保持打开状态时激活其他窗口。

因此,为了能够在窗口之间切换焦点,它们应该非模态,并使用Show方法而不是ShowDialog打开。