WPF équivalent de WinForms' DockStyle.Le remplissage est:
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
C'est la valeur par défaut pour près de contrôles, donc en général vous n'avez pas à faire quoi que ce soit d'avoir un contrôle WPF remplir son conteneur parent: Ils le font automatiquement. Cela est vrai pour tous les contenants qui ne serrez pas leurs enfants à la taille minimale.
Erreurs Les Plus Courantes
Je vais maintenant vous expliquer plusieurs erreurs courantes à éviter HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
de travail comme prévu.
1. Explicite de la Hauteur ou la Largeur
Une erreur commune est de spécifier explicitement la Largeur ou la Hauteur pour un contrôle. Donc, si vous avez ceci:
<Grid>
<Button Content="Why am I not filling the window?" Width="200" Height="20" />
...
</Grid>
Il suffit de retirer les attributs Width et Height:
<Grid>
<Button Content="Ahhh... problem solved" />
...
</Grid>
2. Contenant panneau de serre de contrôle de la taille minimale
Une autre erreur commune est d'avoir le contenant panneau en serrant votre contrôle aussi serré que vous le pouvez. Par exemple, une verticale StackPanel sera toujours presser son contenu verticalement aussi petit que possible:
<StackPanel>
<Button Content="Why am I squished flat?" />
</StackPanel>
Changer pour un autre Panneau et vous serez bon d'aller:
<DockPanel>
<Button Content="I am no longer squished." />
</DockPanel>
Aussi, aucune Grille de ligne ou de colonne dont la hauteur est "Auto" de la même façon presser son contenu dans cette direction.
Quelques exemples de contenants de ne pas les serrer leurs enfants sont:
- ContentControls ne jamais presser leurs enfants (ce qui inclut la Frontière, Bouton, Case à cocher, ScrollViewer, et beaucoup d'autres)
- Grille avec une seule ligne et de colonne
- Grille avec des "*" de la taille des lignes et des colonnes
- DockPanel ne serre pas son dernier enfant
- TabControl ne serre pas son contenu
Quelques exemples de conteneurs qui ne serrer leurs enfants sont:
- StackPanel serre dans l'Orientation de la direction
- Grille avec un "Auto" taille de ligne ou de colonne de serre dans cette direction
- DockPanel serre de tous, mais son dernier enfant dans leurs quai de direction
- TabControl serre-tête (ce qui est affiché sur l'onglet)
3. Explicite de la Hauteur ou de Largeur plus
C'est incroyable de voir combien de fois je vois la Grille ou DockPanel donné explicite de la hauteur et de la largeur, comme ceci:
<Grid Width="200" Height="100">
<Button Content="I am unnecessarily constrainted by my containing panel" />
</Grid>
En général, vous ne voulez jamais à donner un Panneau explicite de la Hauteur ou de Largeur. Ma première étape dans le diagnostic de problèmes de mise en page est de supprimer toute explicite de la Hauteur ou de la Largeur que je peux trouver.
4. La fenêtre est SizeToContent quand il ne devrait pas être
Lorsque vous utilisez SizeToContent, votre contenu sera serré à la taille minimale. Dans de nombreuses applications, ce qui est très utile et est le bon choix. Mais si votre contenu n'a pas de "naturel" de la taille, alors vous aurez probablement envie de les omettre SizeToContent.