131 Stimmen

Wie zentriert man eine WPF-App auf dem Bildschirm?

Ich möchte meine WPF-App beim Starten auf dem primären Bildschirm zentrieren. Ich weiß, dass ich myWindow.Left und myWindow.Top setzen muss, aber woher bekomme ich die Werte?

Ich habe System.Windows.Forms.Screen.PrimaryScreen gefunden, das anscheinend nicht WPF ist. Gibt es eine WPF-Alternative, die mir die Bildschirmauflösung oder etwas Ähnliches liefert?

194voto

Pratik Deoghare Punkte 32638

xaml

...

xaml

...

13 Stimmen

Ich bevorzuge die Verwendung von WPF XAML. Danke! ;-)

1 Stimmen

So einfach ist das!

1 Stimmen

Hinzugefügt zum -Tag und funktioniert perfekt :)

165voto

Indy9000 Punkte 8404

Setzen Sie dies in Ihren Fensterkonstruktor

WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;

.NET Framework Unterstützt in: 4, 3.5, 3.0

.NET Framework Client Profile Unterstützt in: 4, 3.5 SP1

2 Stimmen

Hat bei mir funktioniert (.NET 4) und ich mag auch WindowStartupLocation.CenterOwner für einige Kindfenster.

1 Stimmen

Die Standardeinstellung ist Manuell. Ref: msdn.microsoft.com/en-us/library/…

49voto

Michael Petrotta Punkte 58361

Sie können die Screen-Klasse immer noch von einer WPF-App aus verwenden. Sie müssen nur die System.Windows.Forms-Assembly aus Ihrer Anwendung referenzieren. Wenn Sie das getan haben (und System.Drawing für das folgende Beispiel referenziert haben):

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

... funktioniert einwandfrei.

Haben Sie darüber nachgedacht, Ihre Hauptfenstereigenschaft WindowStartupLocation auf CenterScreen zu setzen?

1 Stimmen

Ich suchte nach WindowStartupLocation; wusste, dass ich das schon einmal gesehen hatte, sehr nützlich!

0 Stimmen

@Michael Petrotta Vielen Dank. Ich sollte mir die Eigenschaften öfter ansehen.

8voto

Eddie Butt Punkte 483

Was ist mit der SystemParameters-Klasse in PresentationFramework? Sie hat eine WorkArea-Eigenschaft, die anscheinend das ist, wonach du suchst.

Aber warum funktioniert das Setzen der Window.WindowStartupLocation nicht? CenterScreen ist einer der Enum-Werte. Muss man das Zentrieren anpassen?

0 Stimmen

Toller Fund :) Das Problem beim Zentrieren des Bildschirms ist für mich zumindest, dass mein Anmeldefenster klein ist und wenn der Benutzer während des Öffnens der App herumklickt, wird es oft übersehen und geht in den Hintergrund. Aber wenn ich es auf dem Hauptbildschirm in der Mitte öffnen kann, funktioniert es gut. Hinweis: Die meisten Benutzer haben 4+ Bildschirme.

8voto

Mehdi Punkte 2063

Sie müssen die System.Windows.Forms Assembly nicht von Ihrer Anwendung referenzieren. Stattdessen können Sie System.Windows.SystemParameters.WorkArea verwenden. Dies ist gleichwertig mit dem System.Windows.Forms.Screen.PrimaryScreen.WorkingArea!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X