Utilizzando StackPanel come ContentControl (WPF)
-
06-09-2019 - |
Domanda
Così ho uno StackPanel che sto usando come ContentControl. Ho un posto dove vorrei pulsanti per essere generati sulla base dei dati che sono vincolanti per, e questo è tutto lavorare bene, ma voglio i pulsanti per essere disposti in orizzontale, non in verticale come è ciò che sta accadendo. Ecco uno screenshot:
E qui è 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 so quello che sto facendo male qui. Ogni informazione sarebbe molto gradita. Grazie!
Soluzione
Direi che sembra che il 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 ItemsControl
ItemsPanelTemplate
, non il contrario come quello che avete nel vostro 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 sul bit ItemsControl.ItemsPanel
come non ho alcun dato per testare con ...
Modifica Oltre al riferimento di Bea, ci sono alcune cose buone da Dott WPF .
Altri suggerimenti
Non riesco a vedere la vostra immagine (è bloccato dal firewall della mia azienda), ma qui vado in ogni modo ...
Il tuo 'Orientation = 'Orizzontale'' probabilmente funziona come dovrebbe: contiene un solo elemento figlio, un ItemsControl. Invece, provare a fare un ControlTemplate per la vostra ItemsControl, dove il ControlTemplate contiene uno StackPanel con Orientamento = "orizzontale".
Spero che questo aiuti!
Modifica
Ancora una volta, Bea passa attraverso una risposta / esempio!