C# 清除ObservableCollection并通知UI
我正在尝试清除ObservableCollectionC# 清除ObservableCollection并通知UI,c#,observablecollection,C#,Observablecollection,我正在尝试清除ObservableCollectionMyTruckCollection中的所有项目。我遇到的问题是,在集合清除所有项后,它不会更新我的UI 我尝试过用以下方法清除它: MyTruckCollection.Clear() 我尝试过这种扩展方法: public static void RemoveAll<T>(this ObservableCollection<T> collection, Func<T, bool> condition)
MyTruckCollection
中的所有项目。我遇到的问题是,在集合清除所有项后,它不会更新我的UI
我尝试过用以下方法清除它:
MyTruckCollection.Clear()代码>
我尝试过这种扩展方法:
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);
}
}
}
publicstaticvoidremoveall(此observeCollection集合,Func条件)
{
对于(int i=collection.Count-1;i>=0;i--)
{
if(条件(集合[i]))
{
收集、移除(i);
}
}
}
然后像这样使用它:
MyTruckCollection.RemoveAll(x=>x.TruckId!=0)代码>
它们都会删除所有项目,但我的UI不会收到更改通知。当我清除集合中的所有数据时,是否有方法通知我的UI
注意:我还在MyTruckCollection上实现了PropertyChanged。我找到了一个非常简单的解决方案
问题是我正在清除MyTruckCollection
中的所有项目,但我使用的数据网格没有随之更新。所有已删除的项目仍在显示中
因此,为了修复它,我只需在清除集合和数据网格后,将数据网格的ItemSource设置为clearedMyTruckCollection
MyTruckCollection.Clear();
dgViewProjects.ItemsSource = MyTruckCollection;
谢谢你的否决票…你能解释一下原因吗?在MyTruckCollection.Clear()之后代码>尝试写入RaisePropertyChanged(“MyTruckCollection”)
或OnPropertyChanged(“MyTruckCollection”)代码>MyTruckCollection在UI中是一次性绑定还是单向绑定?默认情况下,{Binding…}
中的是OneTime,默认情况下,{x:Bind…}
中的是OneTime。同时修改MyTruckCollection的集合。也许有一个“如果”停止传播这些变化。谢谢你的评论@dachibox我刚离开我的电脑atm,但我一回来就会测试。
MyTruckCollection.Clear();
dgViewProjects.ItemsSource = MyTruckCollection;