template example wpf data-binding listbox

example - wpf listview binding



WPF ListBox que establece sus elementos horizontalmente (2)

Intento escribir una aplicación WPF para mostrar imágenes de una selección. Quiero mostrar todas las imágenes disponibles en un banner en la parte superior de la ventana, y mostrar la imagen principal seleccionada en la ventana principal para su posterior procesamiento.

Si quería la lista a la izquierda de la ventana, mostrando las imágenes verticalmente, puedo hacerlo de forma bastante elegante usando databinding.

<ListBox Name="m_listBox" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding}" > <ListBox.ItemTemplate> <DataTemplate> <Image Source="{Binding}" Width="60" Stretch="Uniform" /> </DataTemplate> </ListBox.ItemTemplate> </ListBox>

¿Hay alguna manera directa de hacerlo horizontal en lugar de vertical? Los principales requisitos de una solución son:

  • Los elementos se completan con enlace de datos
  • El elemento seleccionado se cambia simplemente por el usuario haciendo clic en él.

El ItemsPanel de ItemsPanel predeterminado para el control ListBox es un VirtualizingStackPanel , por lo que si desea la experiencia normal y predeterminada para el control, pero solo tiene que establecerse horizontalmente, debe especificar esto (y cambiar la orientación).

Ejemplo:

<ListBox> <ListBox.ItemsPanel> <ItemsPanelTemplate> <VirtualizingStackPanel IsItemsHost="True" Orientation="Horizontal"/> </ItemsPanelTemplate> </ListBox.ItemsPanel> </ListBox>


WrapPanel

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

WPF Tutorial