2009-06-01 9 views
5

J'ai donc un StackPanel que j'utilise en tant que ContentControl. J'ai un endroit où je veux que les boutons soient générés en fonction des données auxquelles je suis lié, et cela fonctionne bien, mais je veux que les boutons soient disposés horizontalement, pas verticalement comme c'est le cas actuellement. Voici une capture d'écran:Utilisation de StackPanel comme ContentControl (WPF)

alt text

Et voici le code de ma description de ContentTemplate:

<StackPanel Name="wpReleaseButtons" Orientation="Horizontal" Grid.Row="2"> 
    <ItemsControl IsTabStop="False" ItemsSource="{Binding Path=BranchCommands}"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Button Tag="{Binding}" Padding="3"> 
        <TextBlock Text="{Binding Path=DisplayValue}" /> 
       </Button> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</StackPanel> 

Je ne sais pas ce que je fais mal ici. Toute information serait grandement appréciée. Merci!

Répondre

9

Je dirais qu'il ressemble à la ItemsControl est ce qui affiche les boutons verticalement. si vous voulez que les boutons du ItemsControl à être horizontal, alors vous devez le StackPanel pour être dans le ItemsControlItemsPanelTemplate, et non l'inverse comme ce que vous avez dans votre code:

<ItemsControl IsTabStop="False" ItemsSource="{Binding Path=BranchCommands}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Button Tag="{Binding}" Padding="3"> 
       <TextBlock Text="{Binding Path=DisplayValue}" /> 
      </Button> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal"/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 

je pourrais être un peu mal sur le bit ItemsControl.ItemsPanel que je n'ai pas de données pour le tester avec ...

Edit: en plus de la référence Bea, il y a quelques bonnes choses par Dr WPF.

+0

Cela l'a fait !!! Merci pour la réponse, et j'ai ajouté le site de Bea à mes favoris. Merci tout le monde! Ça commençait à m'embêter beaucoup, lol. –

3

Je ne vois pas l'image (il est bloqué par le pare-feu de mon entreprise), mais ici je vais de toute façon ...

Votre « Orientation = « horizontal » » fonctionne probablement comme il se doit: il ne contient que un élément enfant, un ItemsControl. Au lieu de cela, essayez de créer un ControlTemplate pour votre ItemsControl, où ControlTemplate contient un StackPanel avec Orientation = "Horizontal".

Espérons que cela aide!

Edit:

Encore une fois, Bea passe par une réponse/exemple!

http://bea.stollnitz.com/blog/?p=10

+0

+1 pour la référence Bea. –

Questions connexes