WPFアプリを画面の中央に配置する方法は?


110

起動時にWPFアプリをメイン画面の中央に配置したいと思います。myWindow.LeftとmyWindow.Topを設定する必要があることはわかっていますが、値はどこで取得できますか?

私はを見つけましたSystem.Windows.Forms.Screen.PrimaryScreen。これは明らかにWPFではありません。画面の解像度などを提供するWPFの代替はありますか?

回答:


143

これをウィンドウコンストラクタに入れてください

WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;

.NET Frameworkサポート対象:4、3.5、3.0

.NET Frameworkクライアントプロファイルサポート対象:4、3.5 SP1


2
私(.NET 4)で働いていてWindowStartupLocation.CenterOwner、いくつかの子ウィンドウでも気に入っています
Stonetip '11年

デフォルトはManualです。参考:msdn.microsoft.com/en-us/library/...
CJBS


49

WPFアプリからScreenクラスを引き続き使用できます。アプリケーションからSystem.Windows.Formsアセンブリを参照するだけです。それが済んだら(そして、以下の例ではSystem.Drawingを参照しました):

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

...うまくいきます。

メインウィンドウプロパティWindowStartupLocationをCenterScreenに設定することを検討しましたか?


1
ああ...私はそれを知りませんでした。ありがとう。
マルセルB

1
WindowStartupLocationを探していました。私はそれを以前に見たのを知っていて、とても役に立ちました!
チョコジョシュ

@Michael Petrottaありがとう。私はもっ​​と頻繁に特性を見るべきです。
meffordm

8

PresentationFrameworkのSystemParametersクラスはどうですか?ワークエリアがありますあなたが探しているもののようですプロパティを。

しかし、なぜWindow.WindowStartupLocationが機能しないのですか?CenterScreenは列挙値の1つです。センタリングを微調整する必要がありますか?


素晴らしい発見:)少なくとも私にとっての中央画面の問題は、ログインウィンドウが小さく、アプリを開いているときにユーザーがクリックすると、気付かれないことが多く、バックグラウンドに入るということです。しかし、中央のプライマリディスプレイで開くことができれば、問題なく動作します。注:ほとんどのユーザーは4つ以上の画面を使用しています
Michal Ciechan 2010

4つ以上の画面、私を数えてください!
user7116

7

System.Windows.Formsアプリケーションからアセンブリを参照する必要はありません。代わりに、を使用できますSystem.Windows.SystemParameters.WorkArea。これはSystem.Windows.Forms.Screen.PrimaryScreen.WorkingArea


2

同等のWPFはありません。System.Windows.Forms.Screenは依然として.NETフレームワークの一部であり、WPFからも使用できます。

詳細についてはこの質問を参照してください。ただし、WindowInteropHelperクラスを使用してWPFコントロールをラップすることにより、画面に関連する呼び出しを使用できます。


2
var window = new MyWindow();

画面の中央で使用する場合:

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

親ウィンドウの中央に使用:

window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.