数据虚拟化不工作

本文关键字:工作 虚拟化 数据 | 更新日期: 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,这就是为什么所有的项目都被一次加载。

我删除了它,现在一切都很好。