我有一个绑定到集合的ListBox。当我将一个项目添加到集合中时,ListBox中没有任何变化。
然而,当我稍微调整窗口的大小时,新项目突然出现在ListBox中。所以绑定似乎在工作,只是缺少刷新。
我在这里可能做错了什么?
XAML:
<ListBox Grid.Row="2" Grid.Column="1" Name="TestModules" ItemsSource="{Binding ModuleList}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding TE}"/>
<TextBlock Text="-"/>
<TextBlock Text="{Binding AF}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
代码:
private List<PruefModule> _moduleList = new List<PruefModule>();
public ICollectionView ModuleList { get; private set; }
ModuleList = CollectionViewSource.GetDefaultView(_moduleList);
_moduleList.Add((PruefModule)ModulesGrid.SelectedItem);
您应该使用ObservableCollection而不是ICollectionView,它应该可以正常工作。
来自MSDN:
表示在以下情况下提供通知的动态数据集合项目会被添加、删除或在刷新整个列表时被删除。
就像Adrian说的那样,你应该使用ObservableCollection。
不过,您可以在添加项目后调用Refresh。
_moduleList.Add((PruefModule)ModulesGrid.SelectedItem);
ModuleList.Refresh();