【问题标题】:How to remove the spacing between few ListView items?如何删除几个 ListView 项目之间的间距?
【发布时间】:2015-11-24 00:09:02
【问题描述】:

如果我的 ListView 中只有几个元素(图片),那么它们的间距相等(一个在顶部,另一个在中间,第三个在底部)。然而,这在项目之间留下了很多空间。我希望它们垂直排列在列表的顶部,就像在 PowerPoint 缩略图视图中一样。我在列表项上尝试了以下属性,但没有一个起作用:

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="Background" Value="Pink" />
        <Setter Property="Padding" Value="0" />
        <Setter Property="BorderThickness" Value="0" />
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="HorizontalAlignment" Value="Center" />
        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
    </Style>

</ListView.ItemContainerStyle>

我设法删除了填充并调整了高度和宽度,但项目仍然在列表中保持等间距。

我将不胜感激。

【问题讨论】:

  • 如果您设置Height,那么项目将等距分布,在您的情况下,每个项目将占用 100
  • 我删除了高度和宽度的属性,但它们仍然是等距的
  • 您说您的项目是Image。是否设置了Height
  • 是的,但它们的整体高度远小于列表视图的高度。如果我将它们拉伸到整个高度,那么它们就会变形

标签: wpf listview


【解决方案1】:

您可以为列表视图项实现自己的模板。

理论上它可能看起来像这样:

<ListView x:Name="myListview">
 <ListView.ItemTemplate>
    <DataTemplate>
      <Image Source="{Binding}" Margin="0" />
   </DataTemplate>
 </ListView.ItemTemplate>
</ListView>

这样你的项目就可以用 0 Margin 的图像来表示,我认为这是导致分离的原因。

我没有在 Visual Studio 中测试过,如果有任何问题,请告诉我。

【讨论】: