我需要访问托管给定控件的窗口(以下代码片段中的this
)。Application.Current.MainWindow vs. Window.GetWindow(this)
假设我的应用程序中只有一个窗口,下列哪些语句的资源密集度较低? (或者有可能是一个更好的方式来做到这一点?)
Application.Current.MainWindow
Window.GetWindow(this)
我需要访问托管给定控件的窗口(以下代码片段中的this
)。Application.Current.MainWindow vs. Window.GetWindow(this)
假设我的应用程序中只有一个窗口,下列哪些语句的资源密集度较低? (或者有可能是一个更好的方式来做到这一点?)
Application.Current.MainWindow
Window.GetWindow(this)
如果只有一个窗口,那么无论选择是好的 - 性能明智的没有他们太大的区别。 Application.Current.MainWindow将简单地返回存储在当前应用程序中的Window类型的字段,而Window.GetWindow()将访问依赖项属性的值。执行起来也不是很昂贵。
有些人直到需要时才进行优化。无论如何,在这种情况下,资源或性能损失可能是最小的。换句话说,你可能不需要担心,你会有其他的东西来优化。
这将返回或设置应用程序的主窗口:
// 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);
这个网址很有用,我一直在寻找'Window'的名字空间。 var ownerWindow = System.Windows.Window.GetWindow(this); – CRice
如果这两个说法都只是访问属性,然后我有窗户的数量可以忽略不计。我对么? –
正确。指出一个窗口更多的是方法的正确性。即如果你有多个窗口,只有一个是MainWindow,而GetWindow可以返回不同的窗口(很明显)。 – Slugart
是的,我知道单一的MainWindow。我只是想澄清未来的参考。 –