C# 什么会导致虚拟化ListView有时生成所有项?

C# 什么会导致虚拟化ListView有时生成所有项?,c#,wpf,listview,virtualizingstackpanel,C#,Wpf,Listview,Virtualizingstackpanel,为清晰起见进行了编辑: 我有两个ListView我的应用程序。第一个包含一个List

为清晰起见进行了编辑:

我有两个ListView我的应用程序。第一个包含一个List>。列表中项目的显示已模板化,仅显示键字符串。当用户在此列表SelectionChanged中选择一个项目时,它会将my second ListView的ItemSource更改为键对的值

这将放置在列宽为“自动”的栅格中

<ListView ItemsSource="{Binding Path=FunctionIndex.Index}"
          Name="completeFunctionIndexView"        
          Style="{StaticResource SearchListStyle}"
          SelectionChanged="functionIndexView_SelectionChanged" />

<ListView Name="SearchResults" 
          VirtualizingStackPanel.IsVirtualizing="True"
          VirtualizingStackPanel.VirtualizationMode="Recycling">
              <ListView.View>
                 <GridView >
                    <GridViewColumn 
                                 CellTemplate="{StaticResource ElementLV}"
                                 Width="Auto"/>
                 </GridView>
              </ListView.View>
           </ListView>
样式SearchListStyle仅包含显示键的文本块,因为它包含键对。 ElementLV是一个小文本块,其运行绑定到my元素的各种属性和ToString值

private void functionIndexView_SelectionChanged(object sender, SelectionChangedEventArgs e)
     {
     //This supposes we want to support a "multiple selection search"
     //for now this isn't implemented
     List<Element> Results = new List<Element>();

     foreach (KeyValuePair<String, List<Element>> item in e.AddedItems)
        {
        Results = item.Value;
        break;
        }

     SearchResults.ItemsSource = Results;
     }
可以在SearchResults listview中显示的这些列表可以包含大量元素100k+。我把isvirtualization放在了第二个列表视图中,大多数时候它都很有魅力

但有时,我不能很好地指出是什么原因导致它太快点击选择一个项目可能?应用程序决定它必须生成列表中不需要的所有项

有人能给我指出正确的方向吗?搜索结果决定要求生成所有项目是否有原因


它是否可以链接到项目的宽度和SearchResults ListView,在测量时,尝试测量其所有项目?

我发现了导致我的列表生成所有元素的情况。它与ListView有关,它没有指定的宽度,并且在一个带有Auto的容器中使用一个带有Auto作为宽度的网格列。在我还不确定的特定情况下,ListView试图生成所有元素来测量它们的宽度,而不是只使用当前可见的元素


我想它并不总是这样,但在我的应用程序中的这种特殊情况下,现在它确实

在第三段中,我不清楚你指的是什么。什么是生成列表中的所有项目。您有两个列表和两个列表视图-通过唯一的名称引用它们。请发布ListViews和SelectionChanged处理程序的XAML。您如何知道它正在生成所有项?它会对每个项进行模板化,我在元素的ToString调用中放置了一个断点来检测它。我的意思是生成ListView2的所有ItemContainers和Items。我将编辑该问题以添加所需的代码部分。