ListBox中的统一网格

时间:2012-10-14 06:06:08

标签: c# wpf

我正在开发一个需要自己的自定义文件管理器/资源管理器的程序。 这很典型:我有一个用户控件(名为FileItem),它包含一个Image(缩略图)和一个Label(文件名)。

我遇到的问题是布局;我需要它在网格布局中(所以我使用统一网格钉住它),就像你在图标视图上的Windows资源管理器一样:

Windows Explorer

我还需要能够选择ListBox完美的文件或多个文件等。 问题是我不能同时使用它们。

所以我试图在ListBox中插入一个Uniform Grid。布局很棒,但我无法选择文件(好像ListBox不在那里)。

快速谷歌搜索建议只使用ListView,但它没有做好工作,因为它有固定的列和行(并且在我正在处理的程序中,大小会改变)。

那么如何才能完全实现ListBox和Uniform Grid的两个功能呢?

编辑(重要): 如果你还需要这个外观并想要一个答案,我实际上推荐使用WrapPanel而不是Uniform Grid。它会自动允许您根据内容动态更改行数。

1 个答案:

答案 0 :(得分: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>

您不应该选择此选项,并且会根据需要显示项目。