Frage

Ich mag meine WPF-Anwendung beim Start auf dem primären Bildschirm zu zentrieren. Ich weiß, ich habe zu setzen myWindow.Left und myWindow.Top, aber wo bekomme ich die Werte?

Ich fand System.Windows.Forms.Screen.PrimaryScreen, die offenbar nicht WPF ist. Gibt es eine WPF-Alternative, die mir die Bildschirmauflösung oder so etwas gibt?

War es hilfreich?

Lösung

Setzen Sie diese in Ihrem Fensterkonstruktor

WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
  

.NET FrameworkSupported in: 4, 3.5,   3.0

     

.NET Framework Client ProfileSupported   in: 4, 3.5 SP1

Andere Tipps

XAML

WindowStartupLocation="CenterScreen"

Sie können immer noch die Screen-Klasse von einer WPF-Anwendung verwenden. Sie müssen nur die System.Windows.Forms Assembly aus Ihrer Anwendung verweisen. Sobald Sie das getan haben, (und System.Drawing unten für das Beispiel verwiesen):

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

... funktioniert gut.

Haben Sie darüber nachgedacht, Ihre Hauptfenster Eigenschaft Windowstartup zu Mittenschirm Einstellung?

Was ist mit der Systemparameter Klasse in PresentationFramework? Es hat einen Work Eigenschaft, die zu sein scheint was Sie suchen.

Aber warum Einstellung wird nicht die Window.WindowStartupLocation Arbeit? Mittenschirm ist einer der ENUM-Werte. Müssen Sie die Zentrierung zwicken?

Sie brauchen nicht auf die System.Windows.Forms Baugruppe aus Ihrer Anwendung zu verweisen. Stattdessen können Sie System.Windows.SystemParameters.WorkArea verwenden. Dies entspricht den System.Windows.Forms.Screen.PrimaryScreen.WorkingArea!

Es gibt keine WPF-Äquivalent. System.Windows.Forms.Screen ist immer noch Teil des .NET Framework und kann, obwohl von WPF verwendet werden.

Siehe diese Frage mehr Details, aber Sie können die Anrufe über die Bildschirme verwenden, indem Sie mit der

var window = new MyWindow();

für Mitte des Bildschirms Verwendung:

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

für Mitte der übergeordneten Fenster Verwendung:

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