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>