【问题标题】:ListView marginsListView 边距
【发布时间】:2016-02-20 14:12:06
【问题描述】:

我正在尝试显示具有特定高度(小于屏幕高度)的图像列表,并且我希望宽度与屏幕宽度匹配。

当我将这些放在一个网格中时,我能够达到预期的效果:

<Grid>
    <Image HorizontalAlignment="Stretch" Source="Assets/someimage.jpg" ></Image>
</Grid>

但是当我将它们放在 ListView 中时,我看到图像的左右边缘有一个边距。换句话说,图像不是边缘到边缘的。 这是我的代码的(过度)简化版本:

<Grid>
    <ListView>
        <Image HorizontalAlignment="Stretch" Source="Assets/someimage.jpg" ></Image>
    </ListView>
</Grid>

在阅读了其他类似的帖子后,我尝试使用 Styles 设置 ListviewItems 的 Horizo​​ntalAlignment 属性,但无济于事。我错过了什么?

【问题讨论】:

  • 你在使用绑定(Itemsource)吗?
  • 最终,我想使用绑定,但现在我不是。我想看看我是否能够先获得想要的外观,然后再做更大更复杂的事情。
  • 不确定它是否会有所帮助,但您可以尝试使用绑定并将 ItemTemplate 设置为 Grid/Image 并查看它是否能解决您的问题。如果您需要代码示例,请告诉我,我会发布一个作为答案。

标签: c# xaml uwp


【解决方案1】:

首先,当你在一个listView上添加一个Image时,这个图片就变成了一个ListViewItem的内容,你可以去掉这个item自动应用的边距。

<ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="Padding" Value="0"/>
            <Setter Property="BorderThickness" Value="0"/>
        </Style>
</ListView.ItemContainerStyle>

即使这样做,您仍然可以有一点边距,这是由列表视图应用的:

ListView BorderThickness="0"
         Padding="-1">

BorderThickness 删除所有边距是不够的,这就是为什么我们将 listView 的填充设置为 -1,您可以调整此值以更好地适应您的 Window。

【讨论】:

  • 太棒了!谢谢布鲁诺。这正是我想要的!
  • 没问题,很乐意提供帮助。
  • 填充应该是“0”而不是“-1”,该值会导致裁剪......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
  • 2013-02-26
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 2017-10-21
相关资源
最近更新 更多