ListBox内的统一网格

3
我正在开发一个需要自定义文件管理器/资源管理器的程序。这很典型:我有一个名为FileItem的用户控件,其中包含一个图像(缩略图)和一个标签(文件名)。
问题出在布局上;我需要它在网格布局中(因此我使用Uniform Grid实现),就像当您在Windows Explorer上时所看到的图标视图一样:
我还需要能够选择文件或多个文件等,ListBox可以完美地完成这项工作。但问题是我无法同时使用两者。
因此,我尝试在ListBox中插入Uniform Grid。布局很好,但我不能选择文件(好像ListBox不存在一样)。
快速的 Google 搜索建议只需使用 ListView,但它做得不好,因为它具有固定的列和行(而我正在开发的程序大小会改变)。
那么我怎样才能完全实现ListBox和Uniform Grid的所有功能呢?
编辑(重要):
如果您也需要此外观并希望得到答案,我实际上建议使用WrapPanel而不是Uniform Grid。它将自动允许您根据内容动态更改行数。
1个回答

4
要将ListBox的ItemsPanel设置为UniformGrid,可以执行以下操作:
<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid IsItemsHost="True" />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBoxItem Content="Grid Item 1" />
    <ListBoxItem Content="Grid Item 2" />
    <ListBoxItem Content="Grid Item 3" />
    <ListBoxItem Content="Grid Item 4" />
    <ListBoxItem Content="Grid Item 5" />
    <ListBoxItem Content="Grid Item 6" />
    <ListBoxItem Content="Grid Item 7" />
    <ListBoxItem Content="Grid Item 8" />
    <ListBoxItem Content="Grid Item 9" />
    <ListBoxItem Content="Grid Item 10" />
</ListBox>

您不应该遇到选择问题,而且物品将按您所需的方式显示。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接