Bonjour,
J'ai une listView qui m'affiche les images contenues dans un dossier. Afin d'améliorer les performances je souhaite que ces images ne soient chargées que lorsqu'elles sont apparantes dans ma listView(). J'ai vu qu'il existe des méthodes de virtualisation propres à une listView.
ce code fonctionne bien, et mes images ne s'affichent que lorsqu'elles sont apparentes dans la liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <ListView SelectionMode="Extended" x:Name="ListViewImage" ItemsSource="{Binding Path=AllImages}" Margin="0,20,0,0" VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode= "Recycling" VirtualizingStackPanel.CleanUpVirtualizedItem="ListViewCleanUpVirtualizedItem"> <ListView.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" Height="25"> <Image Source="{Binding Thumbnail}" /> </StackPanel> </DataTemplate> </ListView.ItemTemplate>
Mon probleme est que j'utilise un GroupStyle afin de créer des groupes dans ma listView et que le fait d'ajouter le code suivant me désactive totalement la virtualisation de la listView.
Est ce que quelqu'un aurait une solution afin d'optimiser le chargement des images?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 <ListView.GroupStyle> <GroupStyle> <GroupStyle.ContainerStyle > <Style TargetType="{x:Type GroupItem}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type GroupItem}" > <Expander x:Name="GroupExpander" IsExpanded="True" > <Expander.Header> <TextBlock > <TextBlock.Text> <MultiBinding StringFormat=" {0} - {1} Elements"> <Binding Path="Name"/> </MultiBinding> </TextBlock.Text> </TextBlock> </Expander.Header> <ItemsPresenter /> </Expander> </ControlTemplate> </Setter.Value> </Setter> </Style> </GroupStyle.ContainerStyle> </GroupStyle> </ListView.GroupStyle>
Partager