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

时间:2013-09-22 00:40:39

标签: c# wpf

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

假设我的应用程序中只有一个窗口,以下哪个语句资源消耗较少? (或者有更好的方法可以做到这一点吗?)

Application.Current.MainWindow

Window.GetWindow(this)

2 个答案:

答案 0 :(得分:6)

有些人在需要之前不会进行优化。无论如何,在这种情况下,资源或性能损失可能是最小的。 换句话说,您可能不必担心,您还需要进行其他优化。

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

// 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);    

答案 1 :(得分:4)

如果你只有一个窗口,那么任何一个选项都很好 - 性能明智,它们之间没有太大区别。 Application.Current.MainWindow将返回一个存储在当前应用程序中的Window类型字段,而Window.GetWindow()将访问依赖项属性的值。执行起来都不是很昂贵。