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

Min*_*gar 5 c# wpf

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

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

Application.Current.MainWindow

Window.GetWindow(this)

Ton*_*ony 6

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

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

// http://msdn.microsoft.com/en-us/library/system.windows.application.mainwindow.aspx
var w = Application.Current.MainWindow;    
Run Code Online (Sandbox Code Playgroud)

使用此命令返回对控件所在窗口的引用:

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

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

Window.GetWindow(theDependencyObject);    
Run Code Online (Sandbox Code Playgroud)

  • 网址很有用,我正在寻找'Window'的命名空间.var ownerWindow = System.Windows.Window.GetWindow(this); (2认同)

Slu*_*art 4

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