WPF列表框模板水平与换行
本文关键字:水平 换行 列表 WPF | 更新日期: 2023-09-27 17:53:13
在我的WPF文档中,我有如下内容:
<ListBox x:Name="lbNames" Height="400" Width="400">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Element[Icon].Value}" />
<TextBlock Text="{Binding Element[Name].Value}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
但是我希望这个列表是水平的,如果没有足够的空间,我希望下一个项目在新的一行。最后,它应该看起来像一个网格。
可选:如果没有足够的垂直空间,我想要一个滚动条
您需要将项目面板更改为WrapPanel
<ListBox x:Name="lbNames" Height="400" Width="400" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Element[Icon].Value}" />
<TextBlock Text="{Binding Element[Name].Value}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
您所描述的是WrapPanel
。这个元素将把你的TextBlock的网格格式,如果他们超过了WrapPanel的宽度,那么下一个元素将被强制到新的行。
要使列表水平,使用
Orientation="Horizontal"
stackpanel 。对于垂直滚动条如果它超出了它应该达到的高度,使用
ScrollViewer.VerticalScrollBarVisibility="Visible".