web-dev-qa-db-ja.com

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

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

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

103
Marcel B

これをウィンドウコンストラクターに入れます

WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;

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

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

121
Indy9000

xaml

WindowStartupLocation="CenterScreen"
138
Pratik Deoghare

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

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

...問題なく動作します。

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

49

PresentationFrameworkのSystemParametersクラスはどうですか?探しているものと思われる WorkArea プロパティがあります。

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

8
Eddie Butt

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

7
Mimi
var window = new MyWindow();

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

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

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

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

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

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

2
Jeff Yates