WPF ListBox qui affiche ses articles horizontalement
j'essaie d'écrire une application WPF pour afficher des images d'une sélection. Je veux afficher toutes les images disponibles dans une bannière en haut de la fenêtre, et l'affichage principal de l'image sélectionnée dans la fenêtre principale pour la poursuite du traitement.
si je voulais la liste sur le gauche de la fenêtre, affichant les images verticalement, je peux le faire très élégamment en utilisant la reliure de données.
<ListBox
Name="m_listBox"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
>
<ListBox.ItemTemplate>
<DataTemplate>
<Image Source="{Binding}" Width="60" Stretch="Uniform" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
est - il un de façon simple, je peux faire ça horizontal au lieu de vertical? Les principales exigences d'une solution est:
- Les éléments sont remplis à l'aide de la liaison de données
- L'élément sélectionné est modifié simplement par l'utilisateur en cliquant sur elle.
2 réponses
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBoxItem>listbox item 1</ListBoxItem>
<ListBoxItem>listbox item 2</ListBoxItem>
<ListBoxItem>listbox item 3</ListBoxItem>
<ListBoxItem>listbox item 4</ListBoxItem>
<ListBoxItem>listbox item 5</ListBoxItem>
</ListBox>
la valeur par défaut ItemsPanel
pour la commande ListBox
est une VirtualizingStackPanel
, donc si vous voulez l'expérience normale par défaut pour la commande mais qu'elle soit juste étalée horizontalement, vous devez spécifier ceci (et changer l'orientation).
exemple:
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel IsItemsHost="True" Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>