プライマリ画面の起動時にWPFアプリの中心にしたい。 myWindow.LeftとmyWindow.Topを設定する必要があることは知っていますが、値はどこで取得できますか?
System.Windows.Forms.Screen.PrimaryScreen
、これは明らかにWPFではありません。画面解像度などを提供するWPFの代替手段はありますか?
これをウィンドウコンストラクターに入れます
WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
.NET Frameworkサポート対象:4、3.5、3.0
.NET Frameworkクライアントプロファイルサポート対象:4、3.5 SP1
xaml
WindowStartupLocation="CenterScreen"
WPFアプリからScreenクラスを引き続き使用できます。アプリケーションからSystem.Windows.Formsアセンブリを参照するだけです。それを行ったら(そして、以下の例でSystem.Drawingを参照しました):
Rectangle workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
...問題なく動作します。
メインウィンドウプロパティWindowStartupLocationをCenterScreenに設定することを検討しましたか?
PresentationFrameworkのSystemParametersクラスはどうですか?探しているものと思われる WorkArea プロパティがあります。
しかし、なぜWindow.WindowStartupLocationが機能しないのですか? CenterScreenは列挙値の1つです。センタリングを微調整する必要がありますか?
アプリケーションからSystem.Windows.Forms
アセンブリを参照する必要はありません。代わりに、System.Windows.SystemParameters.WorkArea
を使用できます。これはSystem.Windows.Forms.Screen.PrimaryScreen.WorkingArea
!と同等です。
var window = new MyWindow();
画面の中央で使用する場合:
window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
親ウィンドウの中央に使用するもの:
window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
同等のWPFはありません。 System.Windows.Forms.Screen
は.NETフレームワークの一部であり、WPFから使用できます。
詳細については この質問 を参照してください。ただし、 WindowInteropHelper
クラスを使用してWPFコントロールをラップすることにより、画面に関連する呼び出しを使用できます。