Ich möchte meine WPF-App beim Start auf dem primären Bildschirm zentrieren. Ich weiß, dass ich myWindow.Left und myWindow.Top einstellen muss, aber woher bekomme ich die Werte?
Ich fand System.Windows.Forms.Screen.PrimaryScreen
, was anscheinend nicht WPF ist. Gibt es eine WPF-Alternative, die mir die Bildschirmauflösung oder ähnliches gibt?
c#
wpf
screen-positioning
Marcel B.
quelle
quelle
WindowStartupLocation.CenterOwner
für einige KinderfensterManual
. Ref: msdn.microsoft.com/en-us/library/…xaml
quelle
Sie können die Screen-Klasse weiterhin in einer WPF-App verwenden. Sie müssen nur auf die System.Windows.Forms-Assembly in Ihrer Anwendung verweisen. Sobald Sie dies getan haben (und für das folgende Beispiel auf System.Drawing verwiesen haben):
... funktioniert gut.
Haben Sie darüber nachgedacht, Ihre Hauptfenstereigenschaft WindowStartupLocation auf CenterScreen zu setzen?
quelle
Was ist mit der SystemParameters-Klasse in PresentationFramework? Es hat eine WorkArea Eigenschaft, die genau das zu sein scheint, wonach Sie suchen.
Aber warum funktioniert das Einstellen von Window.WindowStartupLocation nicht? CenterScreen ist einer der Aufzählungswerte. Müssen Sie die Zentrierung anpassen?
quelle
Sie müssen nicht auf die
System.Windows.Forms
Baugruppe aus Ihrer Anwendung verweisen . Stattdessen können Sie verwendenSystem.Windows.SystemParameters.WorkArea
. Dies entspricht demSystem.Windows.Forms.Screen.PrimaryScreen.WorkingArea
!quelle
Es gibt kein WPF-Äquivalent.
System.Windows.Forms.Screen
ist immer noch Teil des .NET Frameworks und kann jedoch von WPF aus verwendet werden.Sehen Sie diese Frage für weitere Details, aber Sie können die Anrufe verwenden in Bezug auf Bildschirme durch die Verwendung der
WindowInteropHelper
Klasse Ihres WPF - Steuerelement zu wickeln.quelle
für die Mitte des Bildschirms verwenden:
Verwenden Sie für die Mitte des übergeordneten Fensters:
quelle
Ich ziehe es vor, es in den WPF-Code zu setzen.
In
[WindowName].xaml
Datei:quelle