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?

Était-ce utile?

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

var window = new MyWindow();

pour le centre de l'utilisation de l'écran:

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

pour le centre de l'utilisation de la fenêtre parent:

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