2009-06-01 56 views
81

我想在主屏幕上啓動時將我的WPF應用程序居中。我知道我必須設置myWindow.Left和myWindow.Top,但是我在哪裏獲取值?我發現System.Windows.Forms.Screen.PrimaryScreen,這顯然不是WPF。有沒有WPF的替代品給我的屏幕分辨率或類似的東西?如何在屏幕上居中WPF應用程序?

回答

90

將這個在窗口構造

WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; 

.NET FrameworkSupported:4,3.5,3.0

.NET框架客戶端在ProfileSupported :4,3.5 SP1

48

您仍然可以使用WPF應用程序中的Screen類。您只需從應用程序中引用System.Windows.Forms程序集。一旦你這樣做了,(以及參考下面的例子System.Drawing):

Rectangle workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea; 

...工作得很好。

您是否考慮將您的主窗口屬性WindowStartupLocation設置爲CenterScreen?

+1

哦...我不知道一個。謝謝。 – 2009-06-01 16:43:01

+1

我正在尋找WindowStartupLocation;知道我以前見過,非常有用! – chocojosh 2010-09-08 15:43:37

+0

@Michael Petrotta謝謝。我應該更頻繁地觀察這些屬性。 – meffordm 2011-10-08 03:34:41

2

沒有WPF等價物。 System.Windows.Forms.Screen仍然是.NET框架的一部分,可以從WPF中使用。

有關更多詳細信息,請參見this question,但您可以通過使用WindowInteropHelper類來包裝WPF控件來使用與屏幕相關的調用。

8

那麼PresentationFramework中的SystemParameters類呢?它有一個WorkArea財產,似乎是你在找什麼。

但是,爲什麼不能設置Window.WindowStartupLocation的工作? CenterScreen是枚舉值之一。你必須調整居中?

+0

很棒的發現:)至少對我來說,中心屏幕的問題在於,我的登錄窗口很小,如果用戶在應用打開時點擊左右,它往往會被忽視並進入後臺。但如果我可以在中心的主顯示器上打開它,它可以正常工作。注意:大多數用戶有4+屏幕 – 2010-04-27 16:20:16

109

xaml

WindowStartupLocation="CenterScreen" 
7

您不需要從應用程序中引用System.Windows.Forms程序集。相反,您可以使用System.Windows.SystemParameters.WorkArea。這相當於System.Windows.Forms.Screen.PrimaryScreen.WorkingArea

1
var window = new MyWindow(); 

的屏幕使用的中心:

window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; 

父窗口使用的中心:

window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner; 
相關問題