étirement d'alignement WPF
-
11-09-2019 - |
Question
Quelqu'un peut-il me aider à comprendre l'alignement d'étirement WPF. Je lance souvent dans des questions où je veux un contrôle pour remplir une zone, mais je ne comprends jamais à quel niveau je devrais mettre la VerticalAlignment = « Stretch ». Surtout quand UserControls sont impliqués.
Je résous toujours le problème en essayant différentes choses ou de mettre bout à tous les niveaux, mais je voudrais comprendre comment le faire correctement.
permet de prendre l'exemple que je suis maintenant:
- I ai une grille d'une cellule de taille fixe (qui peut être redimensionnée avec un GridSplitter)
- Je Dans cette cellule un UserControl contenant un StackPanel avec un TabControl
- Dans le TabControl je TabItems contenant un autre UserControl avec un ListView
Ou dans une sorte de pseudo XAML
<ns:MyUserControl1 Grid.Row="0" Grid.Column="0">
<!-- this is in MyUserControl1 -->
<StackPanel>
<TabControl>
<TabItem>
<ns:MyUserControl2>
<!-- This is in MyUserControl2 -->
<ListView/>
</ns:MyUserControl2>
</TabItem>
</TabControl>
</StackPanel>
</ns:MyUserControl>
Maintenant, je veux que le ListView pour remplir l'ensemble de la cellule de la grille (à l'exclusion du TabControl et des marges bien sûr).
La solution
Votre ListView remplira votre MyUserControl2 - si vous voulez que cela correspond dans l'ensemble Tab, vous devez vous assurer de supprimer les contraintes de hauteur et la largeur à l'intérieur du fichier XAML du UserControl (ceux-ci par défaut à 300 chacun)
EDIT: Toutes mes excuses - je sautées la partie importante de votre XAML ... Le conteneur MyUserControl1 est un StackPanel ... cela empiler les contrôles enfants et redimensionner pour les adapter; Si vous le remplacer par un DockPanel (ou une grille), les contrôles enfants rempliront l'espace disponible et vous donner le résultat que vous êtes après ...
Jetez un oeil à cette l'article msdn ... Espoir cela aide:)