我需要访问托管给定控件的窗口(this
在以下代码段中)。
假设我的应用程序中只有一个窗口,以下哪个语句占用的资源较少?(或者有没有更好的方法来做到这一点?)
Application.Current.MainWindow
Window.GetWindow(this)
有些人在需要时才进行优化。无论如何,在这种情况下,资源或性能损失可能是最小的。换句话说,您可能不需要担心,您还有其他需要优化的东西。
这将返回或设置应用程序的主窗口:
// http://msdn.microsoft.com/en-us/library/system.windows.application.mainwindow.aspx
var w = Application.Current.MainWindow;
使用它返回对控件所在的 Window 的引用:
// http://msdn.microsoft.com/library/vstudio/system.windows.window.getwindow.aspx
Window.GetWindow(theDependencyObject);
您说您需要访问托管给定控件的窗口。那么我认为在语义上更合适的是:
Window.GetWindow(theDependencyObject);
如果您只有一个窗口,那么任何一个选项都可以 - 在性能方面它们之间没有太大区别。Application.Current.MainWindow 将简单地返回存储在当前应用程序中的 Window 类型字段,而 Window.GetWindow() 将访问依赖项属性的值。执行起来都不是很昂贵。