我有一个虚拟化的ItemControl并且工作正常。但是,当我将项目的可见性从Visible更改为Collapsed时,反之亦然,重新渲染itemControl项目需要很长时间。
<ItemsControl ItemsSource="{Binding Persons}" Grid.Row="1" VirtualizingStackPanel.IsVirtualizing="True" VirtualizingPanel.ScrollUnit="Pixel" ScrollViewer.CanContentScroll="True" Margin="0,1,0,0">
<ItemsControl.Template>
<ControlTemplate TargetType="{x:Type ItemsControl}">
<ScrollViewer CanContentScroll="True">
<ItemsPresenter/>
</ScrollViewer>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Vertical" IsItemsHost="True"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Height="40" Style="{StaticResource RowGridStyle}" Visibility="{Binding VisibilityProperty}">
<!--Some UI Content-->
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
当我更改ItemsSource(Persons)属性时,此XAML工作正常。即使我更改了1000个人的名字,UI也会快速变化。
但当100人的VisibilityProperty发生变化时,UI会重新渲染太长时间。
有帮助吗?