【问题标题】:Listview with scrolling background image带有滚动背景图像的列表视图
【发布时间】: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 实际上并不是它的总高度。它使用ExtentHeightScrollableHeightViewportHeightVerticalOffset 和其他可能的组合来计算它的实际滚动条要求和滚动尺寸。即使有了所有这些,如果说不在视口中的某些项目的Height 比其他项目大得多,也不能保证是正确的,因为当这个不规则项目进入视口时,您可以看到滚动条拇指大小调整。
  • ^^..续。由于我们可能无法使用虚拟化和不均匀的项目高度计算实际的ExtentHeight,因此@GarryVass 的建议将是您的最佳选择。将书架图像切成 3 部分(顶部、架子、底部),然后使用 DataTemplate 选择器分别应用它们,或者将 ListView 与顶部和底部图像包装在外面并将书架图像应用到每个项目。跨度>

标签: c# wpf xaml listview mvvm


【解决方案1】:

不要设置 ListView 的背景,而是尝试创建另一个位于 ListView 后面并包含图像的 ScrollViewer。当 ListView 滚动时,更新 ScrollViewer 滚动位置。如果需要,这还允许您添加视差滚动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    相关资源
    最近更新 更多