У меня есть следующий ListBox:
<ScrollViewer>
<!--Spec Definitions-->
<ListBox DataContext="{Binding SpecPackageSpecGroupListViewModel}"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
ScrollViewer.IsDeferredScrollingEnabled="True"
ItemContainerStyle="{StaticResource SpecPackageSpecGroupListBoxStyle}"
ItemsSource="{Binding SortedChildren}"
Background="Transparent"
BorderThickness="0" SelectionMode="Extended"
Margin="5,5,5,5">
<ListBox.ItemTemplate>
<DataTemplate>
<Controls:SpecPackageSpecGroupControl/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
Предполагается, что этот список содержит около 1000 элементов, но сложных.
Я хочу, чтобы он работал с VirtualizingStackPanel, поэтому я настроил конфигурацию визуализации XAML на:
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
Моя проблема в том, что я думаю, что это не работает - во-первых - загрузка ~ 700 элементов занимает очень много времени, а во-вторых, когда я достигаю точки останова на конструкторе элемента управления - я вижу, что она вызывается 700 раз :
public static int Counter = 0;
public SpecPackageSpecGroupControl()
{
InitializeComponent();
Counter++;
if (Counter%100 == 0)
Console.WriteLine("Hi");
}
Я ломаю точку на Console.WriteLine («Привет») и вижу, что статический счетчик достиг 700.
Таким образом, в основном элементы UIE создаются, хотя это виртуальный режим.
Я неправильно понимаю режим виртуализации или я что-то не так делаю?