2013-07-16 53 views
3

我试图创建一个ListView,看起来像坐在货架上的物品。我能够得到列表视图下架的背景,像这样:Listview with scrolling background image

<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的每一行的背景设置为单个搁板? –

+0

用ListView记录的事情是虚拟化,ScrollViewer的ActualHeight实际上并不是它的总高度。它使用'ExtentHeight','ScrollableHeight','ViewportHeight','VerticalOffset'以及其他可能的东西来计算它的实际滚动条需求和滚动尺寸。即使所有这些都不能保证是正确的,如果说一些不在视口中的物品比其他物品有更大的“高度”,你可以看到当这个不规则的物品进入视口时滚动条的拇指大小会调整。 – Viv

+0

^^ ..继续。由于我们无法通过虚拟化和非均匀项目高度来计算实际的'ExtentHeight',因此@GarryVass的建议对您来说是最好的选择。将书架图像切成3部分(顶部,书架,底部),并使用DataTemplate选择器分别应用它们,或者将ListView与顶部和底部图像一起包裹在其外部,并将搁板图像应用于每个项目。 – Viv

回答

0

而不是设置ListView的背景,尝试创建另一个ListView后面的ScrollViewer并包含图像。当ListView滚动时,更新ScrollViewer滚动位置。这也可以让你添加视差滚动,如果你想要它。