绑定到集合的ListBox不会自动刷新.为什么?



我有一个绑定到集合的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();

最新更新