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

Était-ce utile?

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:

  1. Incluez les autres contrôles ( Label et le bouton ) ou un modèle de vue représentant ces contrôles dans la collection à laquelle vous vous associez.
  2. Écrivez votre propre panneau .
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top