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

时间:2012-01-26 13:15:53

标签: wpf binding

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

2 个答案:

答案 0 :(得分:4)

您应该使用ObservableCollection而不是ICollectionView,它应该可以正常工作。

来自MSDN:

  

表示在何时提供通知的动态数据集合   项目被添加,删除或刷新整个列表。

答案 1 :(得分:0)

像Adrian说的那样你应该使用ObservableCollection。

然而,您可以在添加项目后调用Refresh。

 _moduleList.Add((PruefModule)ModulesGrid.SelectedItem);
 ModuleList.Refresh();