ListBox の項目数に基づいて、ListBox の DataTemplate を変更する必要があります。次の XAML を思いつきました。
<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>
上記の XAML では、バインドされたリストに 2 つ以上の項目を追加すると、データ テンプレートが期待どおりに (その他から既定に) 変更されました。ただし、2 つ以上のアイテムを含むリストの最初のアイテムを削除すると、リスト ボックス全体が空になります (バインドされたリストが空でないことを確認しました)。ただし、2 項目リストの 2 番目の項目を削除しても問題なく動作します (つまり、テンプレートがデフォルトからその他に変更されました)。
なぜこれが起こっているのですか?それとも、この問題を解決するために間違った方法をとったのでしょうか?