Comment centrer une application WPF à l'écran?
-
06-09-2019 - |
Question
Je veux centrer mon application WPF au démarrage sur l'écran principal. Je sais que je dois mettre myWindow.Left et myWindow.Top, mais où dois-je obtenir les valeurs?
J'ai trouvé System.Windows.Forms.Screen.PrimaryScreen
, qui est apparemment pas WPF. Y at-il une alternative WPF qui me donne la résolution d'écran ou quelque chose comme ça?
La solution
Mettez dans votre constructeur de fenêtre
WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
.NET FrameworkSupported dans: 4, 3.5, 3.0
.NET Framework client ProfileSupported dans: 4, 3.5 SP1
Autres conseils
XAML
WindowStartupLocation="CenterScreen"
Vous pouvez toujours utiliser la classe d'écran à partir d'une application WPF. Vous avez juste besoin de référencer l'assembly System.Windows.Forms de votre application. Une fois que vous avez fait cela, (et System.Drawing l'exemple citée en référence pour ci-dessous):
Rectangle workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
... fonctionne très bien.
Avez-vous envisagé la configuration de votre principale propriété de la fenêtre WindowStartupLocation à CenterScreen?
Qu'en est-il la classe SystemParameters dans PresentationFramework? Il a une WorkArea propriété qui semble être ce que vous recherchez.
Mais, pourquoi ne la mise en œuvre de l'Window.WindowStartupLocation? CenterScreen est l'une des valeurs enum. Avez-vous d'ajuster le centrage?
Vous n'avez pas besoin de faire référence à l'ensemble de System.Windows.Forms
de votre application. Au lieu de cela, vous pouvez utiliser System.Windows.SystemParameters.WorkArea
. Cela équivaut à la System.Windows.Forms.Screen.PrimaryScreen.WorkingArea
!
Il n'y a pas d'équivalent WPF. System.Windows.Forms.Screen
fait toujours partie du framework .NET et peut être utilisé à partir WPF cependant.
Voir cette question plus les détails, mais vous pouvez utiliser les appels relatifs aux écrans en utilisant le
pour le centre de l'utilisation de l'écran: pour le centre de l'utilisation de la fenêtre parent: var window = new MyWindow();
window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;