【问题标题】:ListBox bound to collection does not automatically refresh. Why?绑定到集合的 ListBox 不会自动刷新。为什么?
【发布时间】:2012-01-26 13:15:52
【问题描述】:

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

【问题讨论】:

    标签: wpf binding


    【解决方案1】:

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

    来自 MSDN:

    表示一个动态数据集合,它在何时提供通知 添加、删除或刷新整个列表时。

    【讨论】:

      【解决方案2】:

      就像 Adrian 说的你应该使用 ObservableCollection。

      不过,您可以在添加项目后调用 Refresh。

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

      【讨论】:

        猜你喜欢
        • 2012-03-17
        • 1970-01-01
        • 1970-01-01
        • 2012-02-29
        • 2014-07-23
        • 1970-01-01
        • 2014-05-03
        • 2015-01-16
        • 1970-01-01
        相关资源
        最近更新 更多