2009-06-01 10 views
5

Quindi ho uno StackPanel che sto usando come ContentControl. Ho un posto dove voglio che i pulsanti vengano generati in base ai dati a cui mi sto legando, e tutto funziona bene, ma voglio che i pulsanti siano disposti orizzontalmente, non verticalmente come è ciò che sta accadendo attualmente. Ecco uno screenshot:Utilizzo di StackPanel come ContentControl (WPF)

alt text

Ed ecco il codice della mia descrizione 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> 

Non sei sicuro di quello che sto facendo male qui. Ogni informazione sarebbe molto gradita. Grazie!

risposta

9

direi che assomiglia al ItemsControl è ciò che si sta visualizzando i pulsanti in senso verticale. se si desidera che i pulsanti nella ItemsControl per essere orizzontale, allora è necessario il StackPanel di essere nel ItemsControlItemsPanelTemplate, non il contrario, come quello che hai nel tuo codice:

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

potrei essere un po 'sbagliato il bit ItemsControl.ItemsPanel come non ho alcun dato per testare con ...

Modifica: Oltre al riferimento di Bea, c'è un po 'di roba buona da Dr WPF.

+0

Questo ha fatto !!! Grazie per la risposta, e ho anche inserito il segnalibro sul sito di Bea. Grazie a tutti! Stava cominciando a infastidirmi un po ', lol. –

3

non riesco a vedere la vostra immagine (è bloccato dal firewall della mia azienda), ma qui vado comunque ...

tuo 'Orientation = 'Orizzontale'' probabilmente funziona come dovrebbe: contiene solo un elemento figlio, un controllo Items. Prova invece a creare un oggetto ControlTemplate per ItemsControl, in cui ControlTemplate contiene uno StackPanel con Orientation = "Horizontal".

Spero che questo aiuti!

Edit:

Ancora una volta, Bea passa attraverso una risposta/esempio!

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

+0

+1 per il riferimento Bea. –

Problemi correlati