数据虚拟化不工作
本文关键字:工作 虚拟化 数据 | 更新日期: 2023-09-27 18:09:52
我一直在尝试通过为我的ListView实现虚拟化来获得性能。
我用下面的文章来达到这个目的:
WPF: DataVirtualization By Paul McClean http://www.codeproject.com/KB/WPF/WpfDataVirtualization.aspx
问题是,不是加载几个页面,而是实际上加载了所有的页面,这很奇怪。当控件加载时,将加载所有项。
这是我的ListView:
<ListView ItemsSource="{Binding}"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
ScrollViewer.IsDeferredScrollingEnabled="True">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel>
</VirtualizingStackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.View>
<GridView>
<GridViewColumn Width="250">
<GridViewColumn.Header>
<TextBlock Text="Part Number" HorizontalAlignment="Left"></TextBlock>
</GridViewColumn.Header>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Part.PartNumber}"></TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Description" Width="250">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Part.Description}"></TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Current Price" Width="250">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding CurrentPrice}"></TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Old Price" Width="250">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding OldPrice}"></TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
我刚刚意识到我正在使用ScrollViewer(属性ScrollViewer. verticalscrollbarvisibility ="Visible")围绕我的ListView,这就是为什么所有的项目都被一次加载。
我删除了它,现在一切都很好。