WPF ItemControl虚拟化,项目可见性问题

时间:2017-07-29 17:14:47

标签: wpf visibility virtualization

我有一个虚拟化的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会重新渲染太长时间。

有帮助吗?

0 个答案:

没有答案