我正在创建一个WPF
应用,我有3个Windows(MainWindow
,Window2
和Window3
)。当我在加载Window2
后立即启动项目MainWindow
时。当我点击Button
时,Window3
会打开
Window3 w3 = new Window3(this, this.window2);
w3.ShowDialog();
但我无法在Window2
中执行操作(单击控件等),我知道ShowDialog()
方法正在禁用其他打开的Windows,但是有可能使用这些控件进行访问窗口2。当Window2
打开时,如何才能访问Window3
的功能?
PS。(很抱歉问了一个愚蠢的问题,但我是WPF的初学者)!
答案 0 :(得分:0)
您可以访问System.Windows.Application
静态类的Windows
集合,以获取所有当前打开的窗口的列表。然后,您可以按类型或其他条件迭代集合并查找窗口。一种方法是:
var window3 = Application.Current.Windows.OfType<Window3>().FirstOrDefault();
编辑:
在对该问题的评论中,您声明使用w3.Show()
方法打开了窗口。这会以非模态的方式打开窗口。在编辑问题后,w3.ShowDialog()以模态的方式打开窗口。
您可以在MSDN
当函数需要来自用户的其他数据才能继续时,函数会显示模式对话框。由于该函数依赖于模式对话框来收集数据,因此模式对话框还可以防止用户在应用程序保持打开状态时激活其他窗口。
因此,为了能够在窗口之间切换焦点,它们应该非模态,并使用Show
方法而不是ShowDialog
打开。