使用 WrapPanel 自定义 ListView 控件

Custom ListView control with WrapPanel

我正在寻找一个水平排列项目的自定义 ListView 控件,如果达到最大宽度,则将项目添加到下一行。

ListView.ItemsPanel 中的 WrapGrid 不起作用,因为它对每个项目(网格结构)使用相同的宽度。

WinRT XAML 工具包中的 WrapPanel 没有 ItemTemplate,由于缺少 ItemSource,我无法使用绑定 属性。

我可以编写自己的带包装的 ListView 实现吗?我需要覆盖哪些方法?

解决方案是使用 WinRT XAML 工具包中的 WrapPanel inside ListViews ItemsPanel:

            <ListView x:Name="Keywords" SelectionMode="Multiple" ItemContainerStyle="{ThemeResource ListViewItemStyle}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding}" Style="{ThemeResource ListViewItemSubheaderTextBlockStyle}" />
                        </StackPanel>
                    </DataTemplate>
                </ListView.ItemTemplate>

                <ListView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel />
                    </ItemsPanelTemplate>
                </ListView.ItemsPanel>
            </ListView>