我需要根據列表框項目數來更改我的列表框的DataTemplate。我想出了下面的XAML代碼:WPF:根據列表框的項目動態更改列表框的ItemTemplate項目大小
<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,一旦我添加了兩個或多個項目的綁定列表,數據模板改變預期(其他爲默認值)。但是,如果我用兩個以上的項目刪除列表中的第一個項目,則整個列表框將變爲空(我確認綁定列表非空)。刪除兩項列表中的第二項可以正常工作(即模板從默認更改爲其他)。
任何想法爲什麼會發生這種情況?或者,也許我錯誤地解決了這個問題?