En utilisant StackPanel comme ContentControl (WPF)
-
06-09-2019 - |
Question
J'ai un StackPanel que j'utilise comme ContentControl. J'ai un endroit où je veux des boutons à générer à partir des données que je suis à force obligatoire, et c'est tout bon travail, mais je veux que les boutons soient disposés horizontalement, pas verticalement comme il est ce qui se passe actuellement. Voici une capture d'écran:
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!
La solution
Je dirais que cela ressemble à la ItemsControl
est ce qui affiche les boutons verticalement. si vous voulez que les boutons du ItemsControl
pour être horizontal, alors vous devez le StackPanel
être dans le ItemsControl
de ItemsPanelTemplate
, 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 ...
Modifier En plus de la référence Bea, il y a quelques bonnes choses par Dr WPF .
Autres conseils
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: elle ne contient qu'un seul élément enfant, un ItemsControl. Au lieu de cela, essayez de faire un ControlTemplate pour votre ItemsControl, où le ControlTemplate contient un StackPanel avec orientation = "horizontal".
Hope this helps!
Modifier
Encore une fois, Bea passe par une réponse / exemple!