2013-09-22 52 views

回答

4

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

+0

如果这两个说法都只是访问属性,然后我有窗户的数量可以忽略不计。我对么? –

+0

正确。指出一个窗口更多的是方法的正确性。即如果你有多个窗口,只有一个是MainWindow,而GetWindow可以返回不同的窗口(很明显)。 – Slugart

+0

是的,我知道单一的MainWindow。我只是想澄清未来的参考。 –

5

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

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

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

这个网址很有用,我一直在寻找'Window'的名字空间。 var ownerWindow = System.Windows.Window.GetWindow(this); – CRice

相关问题