Liaison de données WPF ItemsControl - ajout de contrôles initiaux supplémentaires
-
03-07-2019 - |
Question
J'ai le code XAML suivant pour un contrôle d'éléments liés aux données afin d'afficher une liste de groupes, avec une étiquette et un bouton pour ajouter un nouveau groupe qui apparaît en premier:
<WrapPanel Orientation="Horizontal">
<Label Content="Groups" />
<Button x:Name="btnGroupAdd" Click="btnGroupAdd_Click" Content="+" />
<ItemsControl ItemsSource="{Binding}" x:Name="_groupList" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal">
</WrapPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Padding="3" BorderThickness="1">
<WrapPanel>
<CheckBox x:Name="_groupEnabled" Click="GroupEnabled_Click" IsChecked="{Binding Path=Checked}">
<TextBlock x:Name="_groupName" Text="{Binding Path=Group.Name}" ></TextBlock>
</CheckBox>
<Button x:Name="_deleteGroup" FontStyle="Normal" Click="DeleteGroup_Click" />
</WrapPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Avec un petit nombre de groupes, tout apparaît sur une seule ligne.
Groupes + Groupe1 Groupe2 Groupe3
Lorsque j'ajoute plusieurs groupes, le panneau d'habillage contenant les éléments est renvoyé à la place, mais le libellé initial et le bouton permettant d'ajouter un nouveau groupe se trouvent sur sa propre ligne, les groupes de données commençant par la ligne suivante.
Groupes +
Group1 Group2 Group3 Group4
Groupe5
Je peux comprendre pourquoi cela se produit, car les panneaux d'emballage sont imbriqués. Ma question est la suivante: comment puis-je inclure la première étiquette et le premier bouton dans le panneau d'habillage intérieur pour qu'ils ne soient pas alignés?
Groupes + Groupe1 Groupe2 Groupe3
Groupe4 Groupe5
La solution
Si cela vous convient:
Groupes + Groupe1 Groupe2 Groupe3
groupe; groupe; groupe; groupe; groupe
Ensuite, je suggérerais d'utiliser une grille
et un WrapPanel
intérieurs. Sinon, vos options sont les suivantes:
- Incluez les autres contrôles (
Label
et le bouton - Écrivez votre propre
panneau
.