2017-06-15 63 views
0

在UWP中,我需要从列表视图中获取当前组的信息。在列表视图中的UWP访问主标题组

我的组被定义为:

<CollectionViewSource x:Name="GroupsList" IsSourceGrouped="True"/> 
<ListView x:Name="LvPeople" ItemsSource="{x:Bind GroupsList.View}"/> 

那是保持当前可见组的信息的属性?

回答

0

根据你的截图,我想你真正想要的是获得第一个可见组头信息。 AFAIK,目前没有属性可以直接获取当前第一个可见标题。如果您确实需要此功能,您可能需要使用Visual​Tree​Helper获取组头中的元素,并尝试计算它是否可见,但这可能不被推荐。 Here是一个类似的线程,你可以参考。以下方法可以帮助您判断它是否可见。

private bool IsVisibileToUser(FrameworkElement element, FrameworkElement container) 
{ 
    if (element == null || container == null) 
     return false; 

    if (element.Visibility != Visibility.Visible) 
     return false; 

    Rect elementBounds = element.TransformToVisual(container).TransformBounds(new Rect(0.0, 0.0, element.ActualWidth, element.ActualHeight)); 
    Rect containerBounds = new Rect(0.0, 0.0, container.ActualWidth, container.ActualHeight); 

    return (elementBounds.Top <= element.ActualHeight && elementBounds.Bottom > containerBounds.Top); 
} 

对于完整的样品请参考this

+0

所以,我必须遍历所有项目,以检查它是否可见与此方法? – user3239349

+0

如果是这样,我有一个问题。因为每次用户滚动列表视图时都会触发。有大量的项目,有时3000-4000。 – user3239349

+0

@ user3239349,是的,每次用户滚动时都会触发。它的效率取决于滚动的频率,而不是项目的数量。这可能不是一个有效的解决方案,我们也不建议这样做。但在您的情况下,这可能是唯一的方法,因为每次用户滚动第一个可见项目时都会更改。 –