我在ComboBox中有一个很大的列表(~10000项),它使用VirtualizingStackPanel类。滚动性能很好,无论如何我想知道如何识别GUI中显示的顶部项目 - 不一定是索引为零的项目,而是当前滚动项目列表顶部的项目。 ?谢谢。
答案 0 :(得分:0)
我使用FrameworkElement.IsVisible属性。使用下面链接中的方法,您还可以检查元素是否部分可见(这在您的情况下很有用):
In WPF, how can I determine whether a control is visible to the user?
您可以(通过使用后台线程或在用户在组合框中滚动时进行计算),检查ComboBox中的项目以查看其FrameworkElement.IsVisible属性是否设置为true。如果是这样,则在其ViewModel中更新元素IsVisible属性。现在,您在ViewModel中有一个标记可见或不标记的项目集合(并且不断更新它所代表的CoboBox项目的可见性)。现在,您可以在项目集合中找到第一个使用.First(x => x.IsVisible == true)的内容。