Je ListBox suivant:VirtualizingStackPanel ne fonctionne pas
<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>
Cette liste est censé accueillir 1000 ~ articles, mais complexes. Je veux qu'il fonctionne avec VirtualizingStackPanel, j'ai donc définir la configuration XAML la visualisation à:
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
Mon problème est que je pense que cela ne fonctionne pas - d'abord - il faut un temps très long à charger ~ 700 articles, et d'autre part, quand je frappe un point d'arrêt sur mon constructeur de contrôle - je peux le voir est appelé 700 fois:
public static int Counter = 0;
public SpecPackageSpecGroupControl()
{
InitializeComponent();
Counter++;
if (Counter%100 == 0)
Console.WriteLine("Hi");
}
je romps point sur la Console.WriteLine (« Salut ») et je peux voir que le compteur statique a atteint 700.
Donc, fondamentalement, l'UIElem Les ents sont créés bien que ce soit un mode virtuel. Est-ce que je me méprends sur le mode de virtualisation, ou y a-t-il quelque chose que je fais de mal? Ne le placez pas dans un ScrollViewer.
vous avez sauvé ma journée! – alizx