Application.Current.MainWindow用于获取主窗口,相信不少同学有这么用过。但是这种方式,可靠吗?

正常情况下,这种方式是可以获取到主窗口的。因为常规的操作,应用程序启动的时候,就会启动一个默认的MainWindow(当然我们也可以手动启动这个主窗口)。

这个时候,通过Application.Current.MainWindow获取这个主窗口,并不会有什么问题。

但是,如果我们的主窗口存在关闭,再打开其它的窗口,这个时候去获取主窗口就不一定是它了。

因为主窗口我们通常知道它是什么数据类型,所以我们可以通过指定窗口类型的方式来获取我们需要的主窗口。

        public static Window GetWindow<T>() where T : Window
        {
            if (Application.Current == null || Application.Current.Windows == null)
                return null;
            for (int i = 0; i < Application.Current.Windows.Count; i++)
            {
                if (Application.Current.Windows[i] is T window)
                {
                    return window;
                }
            }
            return null;
        }

通过上述方法,我们就可以获取指定类型的窗口了。用这种方式获取对应的窗口,相对来讲会比较稳妥。但是如果有多个相同类型的窗口,那就需要改造一下了。

欢迎转载分享,如若转载,请标注署名。

博客链接1:https://huchengv5.gitee.io/

博客链接2:https://huchengv5.github.io/

微信公众号:

承哥技术交流小作坊


本文会经常更新,请阅读原文: https://huchengv5.gitee.io//post/WPF-Application.Current%E6%AD%A3%E7%A1%AE%E8%8E%B7%E5%8F%96%E4%B8%BB%E7%AA%97%E5%8F%A3.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名胡承(包含链接: https://huchengv5.gitee.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系