Usando StackPanel como ContentControl (WPF)
-
06-09-2019 - |
Pregunta
Así que tengo una StackPanel que estoy usando como ContentControl. Tengo un lugar donde quiero botones para ser generados en base a los datos que estoy conectando, y eso es todo trabajo bueno, pero quiero los botones para estar dispuestos de forma horizontal, no vertical como es lo que está sucediendo actualmente. Aquí hay una captura de pantalla:
Y aquí está el código de la descripción de mi 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>
No está seguro de lo que estoy haciendo mal aquí. Cualquier información sería muy apreciada. Gracias!
Solución
Yo diría que se parece a la ItemsControl
es lo que está mostrando los botones verticalmente. si desea que los botones de la ItemsControl
a ser horizontales, entonces necesita la StackPanel
estar en el ItemsControl
ItemsPanelTemplate
, no al revés como lo que usted tiene en su código:
<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>
Puede ser que sea un poco mal en el bit ItemsControl.ItemsPanel
como no tengo ningún dato para probarlo con ...
Editar Además de la referencia Bea, hay algunas cosas buenas por Dr WPF .
Otros consejos
No puedo ver su imagen (está bloqueado por el firewall de mi empresa), pero aquí ir de todos modos ...
'Orientación = 'horizontal'' es, probablemente, funcionando como debería: sólo contiene un elemento secundario, ItemsControl. En su lugar, intenta hacer una ControlTemplate para su ItemsControl, donde el ControlTemplate contiene un StackPanel con Orientación = "horizontal".
Espero que esto ayude!
Editar
Una vez más, Bea llega a través de una respuesta / ejemplo!