WPF的虚拟加载的一些问题
-
WPF-虚拟加载 ItemsControl虚拟加载的样式
<Style x:Key="ItemsControlVirtualizedStyle" TargetType="ItemsControl"> <Setter Property="VirtualizingStackPanel.IsVirtualizing" Value="True" /> <Setter Property="ScrollViewer.CanContentScroll" Value="True" /> <Setter Property="ItemsPanel"> <Setter.Value> <ItemsPanelTemplate> <VirtualizingStackPanel /> </ItemsPanelTemplate> </Setter.Value> </Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ItemsControl"> <Border BorderThickness="{TemplateBinding Border.BorderThickness}" Padding="{TemplateBinding Control.Padding}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}" SnapsToDevicePixels="True"> <ScrollViewer Padding="{TemplateBinding Control.Padding}" Focusable="False"> <ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" /> </ScrollViewer> </Border> </ControlTemplate> </Setter.Value> </Setter>
wpf的虚拟加载都是基于ScrollViewer来实行,只加载ScrollViewer显示的区域当滚动到新的区域都会重新来刷新数据,这样也要有一个具体的长度 才能虚拟化.
相配套的属性
VirtualizingStackPanel:虚拟面板
VirtualizingStackPanel.IsVirtualizing=true;
ScrollViewer.CanContentScroll=true;
并且需要有开启滚动条
暂时还没具体的处理出来-VirtualizingWrapPanel 虚拟化加载并且是自动换行的样式 网上的暂时有问题 还需要研究-待处理....