多行水平 ListView (WPF)
Horizontal ListView on multiple lines (WPF)
我想实现一个可以有多行的水平 ListView
,比如文件浏览器:
我发现我必须为 ItemPanelTemplate
here 使用 StackPanel
,但我更喜欢多行而不是水平滚动条。
我认为这个想法是 当 StackPanel 宽度达到 ListView 宽度时,去下一个 line/create 一个新的 StackPanel。我不知道它是否正确,但也许它可以帮助理解我在寻找什么。
我该如何实施?
您需要使用 WrapPanel
而不是 StackPanel
作为 ItemsPanelTemplate
。
<ListView ItemsSource="{Binding xxx}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
使用 WrapPanel
并指定 width
。
<ListView ItemsSource="your-source">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel width="1200" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
我想实现一个可以有多行的水平 ListView
,比如文件浏览器:
我发现我必须为 ItemPanelTemplate
here 使用 StackPanel
,但我更喜欢多行而不是水平滚动条。
我认为这个想法是 当 StackPanel 宽度达到 ListView 宽度时,去下一个 line/create 一个新的 StackPanel。我不知道它是否正确,但也许它可以帮助理解我在寻找什么。
我该如何实施?
您需要使用 WrapPanel
而不是 StackPanel
作为 ItemsPanelTemplate
。
<ListView ItemsSource="{Binding xxx}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
使用 WrapPanel
并指定 width
。
<ListView ItemsSource="your-source">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel width="1200" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>