Bonjour,

je souhaite utiliser une ListBox dont le ItemsPanel est un Grid :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
        <ListBox Name="ListBox1">
            <ListBox.Resources>
                <Style TargetType="ListBox">
                    <Setter Property="ItemsPanel">
                        <Setter.Value>
                            <ItemsPanelTemplate>
                                 <Grid  Name="ItemsGrid"/>
                            </ItemsPanelTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ListBox.Resources>
        </ListBox>
Mon problème est que j'ai besoin d'une référence à l'élément ItemsGrid dans mon code Behind.

J'ai pensé récupérer cette référence en utilisant son événement Loaded :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
<ItemsPanelTemplate>
      <Grid Name="ItemsGrid" Loaded="ItemsGrid_Loaded"/>
</ItemsPanelTemplate>
Cela fonctionne, mais je pense qu'il doit y avoir plus propre. Par exemple instancier le Grid en tant que StaticRessource et ensuite utiliser cette ressource pour définir le contenu de <ItemsPanelTemplate> :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        <ListBox Name="ListBox1">
            <ListBox.Resources>
                <Grid x:Key="itemsGrid" Name="ItemsGrid"/>
                <Style TargetType="ListBox">
                    <Setter Property="ItemsPanel">
                        <Setter.Value>
                            <ItemsPanelTemplate>
                                 <!-- ICI référence à x:Key="itemsGrid"-->
                            </ItemsPanelTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ListBox.Resources>
        </ListBox>
Mais je ne sais pas si c'est possible et si oui quelle est la syntaxe.