带有滚动背景图片的列表视图

3

我正在尝试创建一个看起来像物品放在书架上的 ListView。我能够在列表视图上获取书架背景,如下所示:

<ListView.Background>
    <ImageBrush ImageSource="..\Images\bookshelf.png" AlignmentX="Left" AlignmentY="Top" TileMode="Tile" Stretch="None" ViewportUnits="Absolute" Viewport="0,0,319,203" />
</ListView.Background>

但是,用这种方法时,背景是静态的,在ListView滚动时不会移动。我想我必须将其添加到ListView的滚动视图中,但我不确定如何操作。

如何添加一张随着ListView平铺和滚动的图片?


1
你尝试过将LV的每一行背景设置为单个架子吗? - Gayot Fow
需要注意的是,在使用ListView时,由于它的虚拟化机制,ScrollViewer的ActualHeight并不等同于总高度。它使用了ExtentHeightScrollableHeightViewportHeightVerticalOffset等多个参数来计算实际的滚动条要求和滚动尺寸。即便如此,如果在视口之外的某个项目比其他项目高度更大,则无法保证其正确性,因为当这个非规则项目进入视口时,你会看到滚动条拇指尺寸发生了调整。 - Viv
有可能我们无法使用虚拟化和不均匀的项高度计算出实际的“ExtentHeight”,@GarryVass的建议可能是在这里最好的选择。将书架图像分为3个部分(顶部,架子,底部),然后使用DataTemplate选择器分别应用它们,或者将ListView包裹在外面的顶部和底部图像中,并将架子图像应用于每个项。 - Viv
1个回答

0

不要设置ListView的背景,而是尝试创建另一个ScrollViewer,该ScrollViewer位于ListView后面并包含一张图片。当滚动ListView时,更新ScrollViewer的滚动位置。这还可以让您添加视差滚动效果(如果需要的话)。


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