多行水平 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>