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

WPF-通过单击按钮聚焦第二个窗口,wpf,window,focus,Wpf,Window,Focus,我正在创建一个WPF应用程序,我有3个窗口(MainWindow、Window2和Window3)。当我启动项目时,Window2会在我的main窗口加载后立即加载。当我点击按钮时,窗口3将打开 Window3 w3 = new Window3(this, this.window2); w3.ShowDialog(); 但我无法在Window2中执行操作(单击控件等),我知道ShowDialog()方法正在禁用其他打开的窗口,但是否可以在Window2中使用这些控件进行访问。当Window3打

我正在创建一个
WPF
应用程序,我有3个窗口(
MainWindow
Window2
Window3
)。当我启动项目时,
Window2
会在我的
main窗口加载后立即加载。当我点击
按钮时,
窗口3将打开

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

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

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

在对问题的评论中,您表示您正在使用
w3.Show()
方法打开窗口。以非模态方式打开窗口。编辑问题w3后,ShowDialog()以模式打开窗口。 有关模态窗口的详细信息,请访问

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


因此,为了能够在窗口之间切换焦点,它们应该是非模式的,并使用
显示
方法打开,而不是
显示对话框

共享代码。代码的哪一部分足够共享?因为我有很多东西…你是如何打开窗口的?我只想通过单击Window3中的按钮返回Window2,然后你可以这样做:yourWindowName.Focus();或者在Window2中找到要聚焦的控件,并对其调用l focus()方法。