gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:00:43 24 4
gpt4 key购买 nike

我的主应用程序页面中有一个 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

非常感谢任何帮助!

谢谢

最佳答案

一般有两种方法可以做到这一点。首先是获取 GridViewItemAutomationPeer ,它实际上有一个直接调用的方法。 Class information here .不过,我在实际使用它时遇到了问题。幸运的是,还有第二个答案。这需要做一些数学运算,但这是可行的。

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

这将返回给你一个 Point对象。

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

注意:如果您使用垂直滚动 ScrollViewer , 使用 Height秒。水平,使用 Width秒。两者,两者都用。我将使用水平/宽度来做我的例子。

  1. HorizontalOffset .这是当前可视区域的当前“下限”。
  2. HorizontalOffset加上 ViewportWidth .这是当前可视区域的上限。
  3. 如果您的 Point.X大于您的下限且小于您的上限,则该项目可见。

如果您进一步需要确定整个 项目是否可见,请执行 Point.X + GridViewItem.Width 的相同计算.

希望这对您有所帮助,祝您编码愉快!

关于windows-runtime - 如何确定 GridView 中的哪些项目在当前滚动窗口中可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16705800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com