Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 清除ObservableCollection并通知UI_C#_Observablecollection - Fatal编程技术网

C# 清除ObservableCollection并通知UI

C# 清除ObservableCollection并通知UI,c#,observablecollection,C#,Observablecollection,我正在尝试清除ObservableCollectionMyTruckCollection中的所有项目。我遇到的问题是,在集合清除所有项后,它不会更新我的UI 我尝试过用以下方法清除它: MyTruckCollection.Clear() 我尝试过这种扩展方法: public static void RemoveAll<T>(this ObservableCollection<T> collection, Func<T, bool> condition)

我正在尝试清除ObservableCollection
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设置为cleared
MyTruckCollection

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;