我有一个WPF ListView。此ListView将包含n个项目。
当用户将一些内容拖入listview时,我在ListView的AdornerLayer上显示一个水平条,以显示项目将插入的索引。
我也在自动滚动listView。因为ScrollViewer.CanContentScroll =“False”ListViewItems部分可见。
我遇到的问题是我正在绘制的指标栏出现在ListView的边界之外(在我上面的例子中),当我结束的ListViewItem位于顶部且仅部分可见时。
绘制条形图的触发器是获取我当前悬停的任何ListViewItem,抓取它的上限值并绘制线条。当ListViewItem尚未完全可见时,条形图在ListView本身上方绘制,显然看起来很奇怪。
摘要:尝试确定给定的ListViewItem是否仅在ListView中部分可见。
在这种情况下,代码实际上并不是那么相关,但如果你愿意,我可以发布一些代码。
由于
答案 0 :(得分:0)
您可以使用ScrollViewer.VerticalOffset
或ScrollViewer.ViewPortHeight
的组合以及listviewitem相对于列表视图本身的位置
itemPosition = ListViewItem.TransformToAncestor(ListView).Transform(new Point(0, 0));
要判断它是否完全可见,您只需要执行以下操作
itemPosition.Y + itemHeight - viewPortHeight
然后,如果该值介于itemHeight
或-viewPortHeight
之间,则可见
或者,什么可能更清洁:
(-itemPosition.Y < itemHeight && itemPosition.Y < viewPortHeight)