Ce que j'essaie de faire, c'est d'afficher une fenêtre qui n'a pas explicitement une hauteur/largeur (les deux valeurs sont omises ou définies à Auto
). Je pensais que la fenêtre déterminerait sa taille en calculant automatiquement toutes les tailles de contrôles utilisateur contenues, mais cela ne fonctionne pas réellement!
Au lieu de cela, je reçois une grande fenêtre avec les valeurs Actualwidth
et Actualheight
toutes deux réglées sur 512 (?!?!)
Déclaration de fenêtre:
<Window x:Class="Window3"
xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
Title="Window3"
Height="Auto">
<StackPanel>
<Label>Window</Label>
</StackPanel>
</Window>
Afficher cette fenêtre sous forme 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()
End Sub
Existe-t-il une solution à cela? Je ne souhaite pas définir explicitement la taille de ma fenêtre car de nombreux contrôles du formulaire seront réduits en fonction des paramètres du constructeur, et il serait difficile de trouver la taille réelle du formulaire. (et laid).
Définissez la propriété de la fenêtre SizeToContent to "WidthAndHeight"
. Cela devrait aider.
Ancienne question mais réponse mise à jour:
Comme @ Muad'Dib l'a suggéré dans sa réponse:
vous devriez 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"
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, nommer le conteneur de la grille principale, définir sa hauteur sur auto, puis lier la hauteur de la fenêtre à la hauteur de la grille
Définir la taille dans l'écran actuel avec les fenêtres d'événements chargées