有两种通用方法可以做到这一点。首先是获取GridViewItem
's AutomationPeer
,它实际上有一个直接调用的方法。类信息在这里。我在让它真正可用时遇到了问题。幸运的是,还有第二个答案。这需要做一些数学运算,但这是可行的。
GridViewItem
使用GridView
's获取项目容器,在本例中为 a ItemContainerGenerator
。
- 获取.
GridView
_ ScrollViewer
你可以搜索FindVisualChild<T>
方法,周围有很多。
- 执行
MyGridViewItem.TransformToVisual(MyGridViewScrollViewer).TransformPoint(new Point(0, 0));
此操作将使您获得项目的左上角,相对于整个可滚动面板(称为它的Extent
)ScrollViewer
(这将在稍后很重要)。
这将返回给您一个Point
对象。
接下来,我们需要找出X
当前显示在ScrollViewer
.
注意:如果您使用的是 Vertical scrolling ScrollViewer
,请使用Height
s. 水平,使用Width
s。两者都用。我将使用水平/宽度来做我的例子。
- 采取
HorizontalOffset
. 这是当前可视区域的当前“下限”。
- 取
HorizontalOffset
加号ViewportWidth
。这是当前可视区域的上限。
- 如果您
Point.X
大于您的下限且小于您的上限,则该项目是可见的。
如果您还需要确定整个项目是否可见,请对 . 进行相同的计算Point.X + GridViewItem.Width
。
希望这会有所帮助,并祝您编码愉快!