【发布时间】:2013-07-15 04:23:42
【问题描述】:
我正在尝试创建一个看起来像放在架子上的物品的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 平铺和滚动的图像?
【问题讨论】:
-
有没有试过把LV每一行的背景设置成一个单独的架子?
-
ListView 需要注意的是它的虚拟化,ScrollViewer 的 ActualHeight 实际上并不是它的总高度。它使用
ExtentHeight、ScrollableHeight、ViewportHeight、VerticalOffset和其他可能的组合来计算它的实际滚动条要求和滚动尺寸。即使有了所有这些,如果说不在视口中的某些项目的Height比其他项目大得多,也不能保证是正确的,因为当这个不规则项目进入视口时,您可以看到滚动条拇指大小调整。 -
^^..续。由于我们可能无法使用虚拟化和不均匀的项目高度计算实际的
ExtentHeight,因此@GarryVass 的建议将是您的最佳选择。将书架图像切成 3 部分(顶部、架子、底部),然后使用 DataTemplate 选择器分别应用它们,或者将 ListView 与顶部和底部图像包装在外面并将书架图像应用到每个项目。跨度>