在我的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>
但是我希望这个列表是水平的,如果没有足够的空间,我想要一个新行中的下一个项目。 最后,它应该看起来像一个网格。
可选:如果垂直空间不足,我需要一个滚动条。
答案 0 :(得分:2)
您需要将项目面板更改为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>
答案 1 :(得分:-1)
您所描述的是WrapPanel
。此元素将以Text格式放置TextBlock,如果它们超过WrapPanel的宽度,则下一个元素将被强制转换为新行。
请参阅this教程。
答案 2 :(得分:-1)
要使列表水平,请使用
var x = document.getElementsByName("compare_name"); //Typo in **compare_name**
在stackpanel中。对于垂直滚动条,如果它高于应有的值,请使用
Orientation="Horizontal"