加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 系统 > 正文

windows-runtime – 如何确定GridView中哪些项目在当前滚动窗口

发布时间:2021-02-01 00:07:32 所属栏目:系统 来源:网络整理
导读:我在主应用程序页面中有一个GridView,我想对当前为用户查看的项目(高优先级)进行一些后台处理,然后当然也执行其他项目(低优先级). 我可以访问ScrollBar和ScrollViewer,但它们都没有告诉我哪些项目在当前滚动窗口中.我可以尝试破解它,但它变得棘手,因为行/

我在主应用程序页面中有一个GridView,我想对当前为用户查看的项目(高优先级)进行一些后台处理,然后当然也执行其他项目(低优先级).

我可以访问ScrollBar和ScrollViewer,但它们都没有告诉我哪些项目在当前滚动窗口中.我可以尝试破解它,但它变得棘手,因为行/列的数量根据滚动区域的大小而变化.

http://msdn.microsoft.com/en-us/library/windows/apps/br209745.aspx
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.scrollviewer.aspx

任何帮助非常感谢!

谢谢

解决方法

有两种通用方法可以做到这一点.第一个是获取GridViewItem的AutomationPeer,它实际上有一个直接的方法来调用. Class information here.虽然我实际上可以使用它但是我遇到了问题.幸运的是,还有第二个答案.这将需要一些数学计算,但它是可行的.

>使用GridView的ItemContainerGenerator获取项容器,在本例中为GridViewItem.
>获取GridView的ScrollViewer.您可以搜索FindVisualChild< T>方法,周围有很多.
> Do MyGridViewItem.TransformToVisual(MyGridViewScrollViewer).TransformPoint(new Point(0,0));这将使您获得项目的左上角,相对于ScrollViewer的整个可滚动面板(称为其范围)(稍后这将很重要).

这将返回一个Point对象.

接下来,我们需要找出当前在ScrollViewer中显示的X值范围.

注意:如果您使用的是垂直滚动ScrollViewer,请使用高度.水平,使用宽度.两者都使用.我将使用水平/宽度来做我的例子.

>采用Horizo??ntalOffset.这是您当前可查看区域的当前“下限”.
>采用Horizo??ntalOffset加上ViewportWidth.这是当前可视区域的上限.
>如果Point.X大于下限且小于上限,则该项目可见.

如果您还需要查明整个项目是否可见,请执行此操作
????Point.X GridViewItem.Width的相同计算.

希望这有帮助,并且编码愉快!

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读