清除ObservableCollection和通知UI

本文关键字:UI 通知 ObservableCollection 清除 | 更新日期: 2023-09-27 18:04:44

我试图清除我的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);

他们都删除了所有的项目,但我的UI没有被通知的变化。是否有一种方法来通知我的UI当我清除集合中的所有数据?

注意:我也有PropertyChanged实现在我的MyTruckCollection.

清除ObservableCollection和通知UI

我找到了一个非常简单的解决办法。

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

所以要修复它,我只需要将DataGrid的ItemSource设置为清除的MyTruckCollection后,我清除了集合和DataGrid被清除。

MyTruckCollection.Clear();
dgViewProjects.ItemsSource = MyTruckCollection;