C# listview中的UWP访问主标头组

C# listview中的UWP访问主标头组,c#,listview,header,uwp,C#,Listview,Header,Uwp,在UWP中,我需要从listview获取当前组的信息 我的组定义为: <CollectionViewSource x:Name="GroupsList" IsSourceGrouped="True"/> <ListView x:Name="LvPeople" ItemsSource="{x:Bind GroupsList.View}"/> 保存当前可见组信息的属性是什么 根据您的屏幕截图,我认为您真正想要的是获得第一个可见的组标题信息。AFAIK,目前没有直接获取当

在UWP中,我需要从listview获取当前组的信息

我的组定义为:

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

保存当前可见组信息的属性是什么


根据您的屏幕截图,我认为您真正想要的是获得第一个可见的组标题信息。AFAIK,目前没有直接获取当前第一个可见头的属性。如果确实需要此功能,可能需要使用“获取组标题内的元素”并尝试计算它是否可见,但不建议这样做。是一个类似的线程,你可以参考。下面的方法可以帮助您判断它是否可见

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);
}
private bool IsVisibileToUser(FrameworkElement元素,FrameworkElement容器)
{
if(元素==null | |容器==null)
返回false;
if(element.Visibility!=Visibility.Visible)
返回false;
Rect elementBounds=element.TransformToVisual(container.TransformBounds)(新的Rect(0.0,0.0,element.ActualWidth,element.ActualHeight));
Rect containerBounds=新的Rect(0.0,0.0,container.ActualWidth,container.ActualHeight);
返回(elementBounds.Top containerBounds.Top);
}

完整的样品请参考

所以,我必须遍历所有项,以检查它是否可以通过此方法看到?如果是这样,我有一个问题。因为这将在用户每次滚动listview时触发。还有大量的项目,有时是3000-4000。@user3239349,是的,每次用户滚动时都会触发。它的效率取决于滚动的频率,而不是项目的数量。这可能不是一个有效的解决方案,我们也不建议这样做。但在您的场景中,这可能是唯一的方法,因为每次用户滚动第一个可见项时,第一个可见项都会发生更改。好吧,这就是答案。现在我将使用这种方法。但是微软应该让开发者更容易理解这些东西。