2009-10-09 4 views
4

Ceci est une question complémentaire à une question répondue [ici] [1].Modification dynamique de l'emplacement de démarrage d'une fenêtre WPF

La position de démarrage d'une fenêtre WPF a été définie dans XAML. Maintenant, je me demande comment changer ces propriétés dans le code? Par exemple pourrais-je dire quelque chose comme:

Window1.Top = 40 dans le gestionnaire d'événements de chargement de la fenêtre? Ou quel événement de fenêtre aurais-je besoin de définir ceux pour cela modifier dynamiquement la position de départ?

L'objectif est de définir dynamiquement la position de démarrage de Windows avant qu'elle ne soit rendue.

+0

Essayez-vous de définir cela à partir de la fenêtre, ou lorsque vous créez une nouvelle fenêtre, à partir du code appelant? –

Répondre

7

Ceci est assez facile à faire dans le code:

public partial class Window1 { 

    public Window1() 
    { 
     InitializeComponent(); 
     this.Height = 500; 
     this.Width = 500; 
     this.WindowStartupLocation = WindowStartupLocation.Manual; 
     this.Left = 0; 
     this.Top = 0; 
    } 
} 

Vous pouvez définir l'un des paramètres que vous souhaitez, mais si vous allez mettre Haut/Gauche, assurez-vous de mettre WindowStatupLocation (ou ont il a mis en manuel dans XAML).

0

Personnellement, je jetterais les types de lignes "Window1.Top = 40" dans le constructeur, après l'appel à InitializeComponent(). C'est sûr d'être appelé avant que la fenêtre est réellement rendue.

Editer: Oups. J'aurais dû lire plus attentivement.

Essayez-vous de définir la position de la fenêtre à partir d'une classe autre que celle de la fenêtre elle-même? Ma suggestion fonctionnerait si vous êtes en mesure de définir la position de Window1 à partir du constructeur de Window1. Sinon, je dirais que le mieux que vous pourriez faire serait d'écouter l'événement Loaded de la fenêtre et de définir la position à partir de là.

+1

Merci pour votre contribution! Juste pour des raisons de curiosité, en termes de définition de la position de la fenêtre quand elle est créée à partir d'une autre classe, ne pourriez-vous pas faire un autre constructeur avec les propriétés de positionnement comme paramètre et ensuite de la même manière? – Evan

+0

Oui - ce serait la façon la plus simple de le faire. –

+0

Bon point. J'aurais dû penser à cela. – Stephen

Questions connexes