2009-06-01 25 views
5

Tengo un StackPanel que estoy usando como ContentControl. Tengo un lugar donde quiero que se generen botones en función de los datos a los que me estoy vinculando, y todo está funcionando bien, pero quiero que los botones se distribuyan horizontalmente, no verticalmente, como lo está sucediendo actualmente. Aquí hay una captura de pantalla:Usando StackPanel como ContentControl (WPF)

alt text

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!

Respuesta

9

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 ItemsControlItemsPanelTemplate, 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> 

que podría ser 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.

+0

¡Esto lo hizo! Gracias por la respuesta, y también he marcado el sitio de Bea. ¡Gracias a todos! Esto estaba empezando a fastidiarme un poco, jajaja. –

3

no puedo ver su imagen (está bloqueado por el firewall de mi empresa), pero aquí ir de todos modos ...

Su 'Orientación = 'horizontal'' es, probablemente, funcionando como debería: sólo contiene un elemento hijo, un ItemsControl. En su lugar, intente crear un ControlTemplate para su Control de elementos, donde 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!

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

+0

+1 para la referencia de Bea. –

Cuestiones relacionadas