WPF列表框,水平布局其项目

我试图写一个WPF应用程序来显示select的图像。 我想要在窗口顶部的横幅中显示所有可用的图像,并在主窗口中显示主要选定的图像作进一步处理。

如果我想要在窗口左侧的列表,垂直显示图像,我可以用数据绑定相当优雅地做到这一点。

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

有没有一种简单的方法可以使水平而不是垂直? 解决scheme的主要要求是:

  • 这些项目使用数据绑定来填充
  • 所select的项目只是由用户点击而改变。

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

ListBox控件的默认ItemsPanel是一个VirtualizingStackPanel ,所以如果你想为控件设置正常的默认体验,但是只需要水平放置它,你应该指定这个(并改变方向)。

例:

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