我一直试图通过为我的ListView实现虚拟化来获得性能。
我使用以下文章来实现这一点:
WPF: 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>发布于 2011-09-25 21:48:27
我刚刚意识到我使用的是一个ScrollViewer.VerticalScrollBarVisibility="Visible") (属性ScrollViewer围绕着我的ListView ),这就是为什么所有的项目都同时加载的原因。
我把它拿走了,现在一切都很好。
https://stackoverflow.com/questions/7548752
复制相似问题