Application.Current.MainWindow vs. Window.GetWindow(this)

本文关键字:this GetWindow Window Current MainWindow vs Application | 更新日期: 2023-09-27 18:32:20

我需要访问托管给定控件的窗口(this在以下代码片段中)。

假设我的应用程序中只有一个窗口,以下哪项语句的资源密集度较低?(或者也许有更好的方法来做到这一点?

Application.Current.MainWindow

Window.GetWindow(this)

Application.Current.MainWindow vs. Window.GetWindow(this)

有些人直到需要时才进行优化。无论如何,在这种情况下,资源或性能损失可能很小。换句话说,您可能不需要担心,您将有其他需要优化的东西。

这将返回或设置应用程序的主窗口:

// http://msdn.microsoft.com/en-us/library/system.windows.application.mainwindow.aspx
var w = Application.Current.MainWindow;    

使用此选项返回对控件所在的窗口的引用:

// http://msdn.microsoft.com/library/vstudio/system.windows.window.getwindow.aspx
Window.GetWindow(theDependencyObject);

您说您需要访问托管给定控件的窗口。那么我认为在语义上更合适的是:

Window.GetWindow(theDependencyObject);    

如果您只有一个窗口,那么任何一个选项都可以 - 性能方面,它们之间没有太大区别。 Application.Current.MainWindow 将只返回存储在当前应用程序上的 Window 类型的字段,而 Window.GetWindow() 将访问依赖项属性的值。 两者都不是执行成本很高。