Je dois modifier le DataTemplate de ma ListBox, en fonction du nombre d'éléments ListBox. Je suis venu avec le XAML suivant:WPF: Modifiez dynamiquement ItemTemplate de ListBox en fonction des éléments ListBox Taille
<Window.Resources>
<DataTemplate x:Key="DefaultTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Text}"/>
<TextBlock Text="default template" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="OtherTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Text}"/>
<TextBlock Text="other template" />
</StackPanel>
</DataTemplate>
</Window.Resources>
<ListBox Name="listBox1" ItemsSource="{Binding Path=Items}">
<ListBox.Style>
<Style TargetType="{x:Type ListBox}">
<Setter Property="ItemTemplate" Value="{StaticResource DefaultTemplate}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Items.Count}" Value="1">
<Setter Property="ItemTemplate" Value="{StaticResource OtherTemplate}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Style>
</ListBox>
Avec le XAML ci-dessus, une fois que j'ai ajouté deux ou plusieurs éléments à la liste liée, le modèle de données a changé comme prévu (d'autres par défaut). Cependant, si je supprime le premier élément de la liste avec plus de deux éléments, la boîte de liste entière devient vide (j'ai vérifié que la liste des liens n'est pas vide). Suppression du deuxième élément dans une liste de deux éléments fonctionne bien (c'est-à-dire que le modèle est passé de la valeur par défaut à l'autre).
Des idées pour lesquelles cela se passe? Ou peut-être que je suis allé dans le mauvais sens pour résoudre ce problème?