清除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.
我找到了一个非常简单的解决办法。
问题是我正在清除MyTruckCollection
中的所有项目,但我使用的DataGrid没有更新。所有被删除的项目仍在显示
所以要修复它,我只需要将DataGrid的ItemSource设置为清除的MyTruckCollection
后,我清除了集合和DataGrid被清除。
MyTruckCollection.Clear();
dgViewProjects.ItemsSource = MyTruckCollection;