234 votes

La hauteur de la fenêtre="Auto" ne fonctionne pas comme prévu

Ce que j'essaie de faire, c'est afficher une fenêtre qui n'a pas explicitement de hauteur/largeur (les deux valeurs omises ou définies sur Auto). Je pensais que la fenêtre trouverait sa taille en calculant automatiquement toutes les tailles des usercontrols qu'elle contient, mais cela ne fonctionne pas réellement !

À la place, j'obtiens une grande fenêtre avec des valeurs Actualwidth et Actualheight toutes deux définies sur 512 (?!?!)

Déclaration de la fenêtre :

    Fenêtre

Affichage de cette fenêtre comme une boîte de dialogue via :

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click
    Dim dlg As New Window3
    dlg.ShowDialog()

Y a-t-il une solution à cela ? Je ne veux pas définir explicitement la taille de ma fenêtre car de nombreux contrôles dans le formulaire seront masqués en fonction des paramètres du constructeur, et essayer de trouver la taille réelle du formulaire serait compliqué (et moche).

8 votes

Tu peux également vouloir centrer la fenêtre avec .WindowStartupLocation mis à "CenterScreen"

437voto

Muad'Dib Points 14260

Définissez la propriété SizeToContent="WidthAndHeight" de la fenêtre. Cela devrait aider.

91 votes

Pour les paresseux qui veulent copier-coller SizeToContent="WidthAndHeight" ;)

4 votes

Faites attention à utiliser SizeToContent="LargeurEtHauteur". Si la taille du contenu de la fenêtre dépasse la taille de l'écran, la fenêtre peut déborder de l'écran.

1 votes

@KyloRen donc une MaxWidth ou MaxHeight doit être définie pour éviter le problème

9voto

Vishal Points 2112

Ancienne question mais une réponse mise à jour :

Comme @Muad'Dib l'a suggéré dans sa réponse :

vous devez définir SizeToContent="WidthAndHeight".

Si la taille du contenu de la fenêtre augmente plus que la taille de l'écran, la fenêtre peut déborder de l'écran. Donc, vous devez considérer :

MaxWidth="600"
MaxHeight="400"

3voto

Eh bien, vous ne pouvez pas définir la hauteur de la fenêtre sur auto, pour ce faire vous pouvez utiliser un petit truc, nommez le conteneur principal de la grille principale, définissez sa hauteur sur auto puis liez la hauteur de la fenêtre à la hauteur de la grille principale

1voto

Zeyad Points 307

Vous pouvez faire ce qui suit :

MaxWidth = SystemParameters.MaximizedPrimaryScreenWidth;
MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
SizeToContent = SizeToContent.WidthAndHeight;

Veuillez noter que l'utilisation de SizeToContent seule fonctionnera. Cependant, si la taille de votre contenu est plus grande que l'écran, la fenêtre débordera au-delà de votre écran, mais en combinant cela avec le réglage de la MaxWidth et MaxHeight de la fenêtre pour correspondre à votre écran, la fenêtre s'adaptera essentiellement au contenu jusqu'au maximum de votre écran.

-1voto

Hooman Points 49

Définir la taille dans l'écran actuel avec les événements chargés de windows

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X