2009-04-30 5 views
0

J'ai le XAML suivant pour un articles databound contrôle pour afficher la liste des groupes, avec une étiquette et le bouton pour ajouter un nouveau groupe qui apparaît en premier:données WPF ItemsControl obligatoires - l'ajout de contrôles initiaux supplémentaires

<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 ligne.

Groupes + Groupe1 Groupe2 Group3

Quand j'ajoute plusieurs groupes, le groupe d'emballage contenant les éléments enveloppements, mais l'étiquette initiale et le bouton pour ajouter un nouveau groupe est sur sa propre ligne, la Groupes de bases de données commençant à la ligne suivante.

Groupes +
Groupe1 Groupe2 Group3 Group4
Group5

Je peux comprendre pourquoi cela se produit, comme les panneaux d'enveloppe 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 de façon à ce qu'ils ne soient pas sur une rangée par eux-mêmes?

Groupes + Groupe1 Groupe2 Group3
Group4 Group5

Répondre

1

Si vous êtes satisfait de cela:

Groupes + Groupe1 Groupe2 Group3
                                Group4 Group5

Je suggère d'utiliser une Grid extérieure et une WrapPanel intérieure. Dans le cas contraire, vos options sont:

  1. Inclure les autres contrôles (Label et Button) ou un modèle de vue reprenting ces contrôles dans la collection vous liant à.
  2. Écrivez le votre Panel.
+0

Merci Kent, ça aide. Je vais jeter un coup d'œil à la grille, car cela semble le plus facile. Je ne pense pas que je puisse ajouter les contrôles à la collection, car elle est désérialisée à partir d'un fichier XML. Je suppose que la question suivante est comment écrire mon propre panneau ... – harriyott

Questions connexes