Я изменил шаблон элемента управления моего ListView, чтобы он выглядел следующим образом:
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
<ScrollViewer Background="{TemplateBinding Background}"
VerticalScrollBarVisibility="Auto"
Padding="{TemplateBinding Padding}" Style="{DynamicResource {x:Static GridView.GridViewScrollViewerStyleKey}}"
VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling"
ScrollViewer.IsDeferredScrollingEnabled="True">
<StackPanel>
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
<Border x:Name="FillerView" BorderThickness="0"/>
</StackPanel>
</ScrollViewer>
</Border>
Причина этого в том, что я хочу, чтобы переменная окраска ListView
продолжалась.Это делается с помощью триггера для границы FillerView
.Если я уберу Stackpanel
и границу Fillerview
из этого шаблона, мой ListView
будет виртуализироваться нормально и очень быстро.Если он у меня есть, он невероятно медленный.
Может кто-нибудь сказать мне, почему виртуализация не работает, когда я использую шаблон выше?О, и я не могу переместить Границу FillerView
из Scrollviewer
, потому что я хочу, чтобы нижняя полоса прокрутки была ниже заполнителя.
Спасибо!