1

我有一个 WPF 列表视图。此 ListView 将包含 n 个项目。

当用户将某些东西拖到列表视图中时,我在 ListView 的 AdornerLayer 上显示一个水平条,以显示将插入该项目的索引。

我也在自动滚动列表视图。因为 ScrollViewer.CanContentScroll="False" ListViewItems 是部分可见的。

我遇到的问题是,当我结束的 ListViewItem 位于顶部且仅部分可见时,我正在绘制的指示条出现在 ListView 的边界之外(在我上面的例子中)。

绘制条的触发器是获取我当前悬停在上面的任何 ListViewItem,抓住它的上界值并画线。当 ListViewItem 尚未完全可见时,条形图绘制在 ListView 本身之上,显然看起来很奇怪。

摘要:试图确定给定的 ListViewItem 在 ListView 中是否仅部分可见。

在这种情况下,代码并不是那么相关,但如果你愿意,我可以发布一些。

谢谢

4

1 回答 1

0

您可能可以使用ScrollViewer.VerticalOffsetorScrollViewer.ViewPortHeight和 listviewitem 相对于 listview 本身的位置的组合

itemPosition = ListViewItem.TransformToAncestor(ListView).Transform(new Point(0, 0));

要判断它是否完全可见,您只需要执行以下操作

itemPosition.Y + itemHeight - viewPortHeight

那么如果该值在itemHeightor之间-viewPortHeight,那么它是可见的

或者,什么可能更清洁:

(-itemPosition.Y < itemHeight && itemPosition.Y < viewPortHeight)
于 2013-02-07T17:15:00.773 回答