基本列表框模板
<ListBox Height="200"
x:Name="lstBox"
ScrollViewer.VerticalScrollBarVisibility="Visible"
VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling" VirtualizingStackPanel.CacheLength="2,3"
VirtualizingStackPanel.CacheLengthUnit="Page"
ItemTemplate="{StaticResource DataTemplater}"
ItemsSource="{Binding Source={StaticResource SearchedResults}}"
SelectedItem="{Binding CurrentItem}"
IsSynchronizedWithCurrentItem="True">
<ListBox.Template>
<ControlTemplate TargetType="{x:Type ItemsControl}">
<ScrollViewer >
<ItemsPresenter />
</ScrollViewer>
</ControlTemplate>
</ListBox.Template>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel ScrollUnit="Pixel" Orientation="Vertical" VirtualizationMode="Recycling" IsContainerVirtualizable="True" IsVirtualizing="True" IsItemsHost="True"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
DataTemplater 项目模板包含一个带有绑定控件的堆栈面板。绑定源是来自数据集的数据表。
这里的问题是虚拟化不起作用,因为我在项目模板中指定了 C# 代码查找,并且该代码被数据表中的所有项目命中,而不仅仅是可见项目?
我该如何解决这个问题?