清除ObservableCollection和通知UI

时间:2016-08-29 11:34:20

标签: c# observablecollection clear

我试图清除我所有物品的ObservableCollection MyTruckCollection。我遇到的问题是,在收集清除所有项目后,它没有更新我的UI。

我已尝试通过以下方式清除它:

MyTruckCollection.Clear();

foreach (var item in MyTruckCollection.ToList())
    MyTruckCollection.Remove(item);

我尝试过这种扩展方法:

    public static void RemoveAll<T>(this ObservableCollection<T> collection, Func<T, bool> condition)
    {
        for (int i = collection.Count - 1; i >= 0; i--)
        {
            if (condition(collection[i]))
            {
                collection.RemoveAt(i);
            }
        }
    }

并像这样使用它:

MyTruckCollection.RemoveAll(x => x.TruckId != 0);

他们都删除了所有项目,但我的用户界面没有收到有关更改的通知。当我清除集合中的所有数据时,有没有办法通知我的用户界面?

注意:我还在MyTruckCollection上实现了PropertyChanged。

1 个答案:

答案 0 :(得分:0)

我找到了一个非常简单的解决方案。

问题是我正在清除MyTruckCollection中的所有项目,但我使用的DataGrid没有使用它进行更新。所有项目仍然显示已删除。

所以为了修复它,我必须在清除集合并清除DataGrid后将DataGrid的ItemSource设置为已清除的MyTruckCollection

MyTruckCollection.Clear();
dgViewProjects.ItemsSource = MyTruckCollection;
相关问题