如何将项添加到方法内部的Observable集合中

本文关键字:内部 Observable 集合 方法 添加 | 更新日期: 2023-09-27 18:01:17

我不能添加项到Observable集合,它是在一个方法内。

下面是代码:

  • 我将首先调用GetFeaturelist()方法,这里它返回可观察集合,然后我将调用AddRange,它应该在GetFeaturelist()方法中添加项目到FeatureList,这是没有发生的。

请帮我解决这个问题。

GetFeaturelist().AddRange(_featureListBuffer);
private ObservableCollection<Feature> GetFeaturelist()
{
   return FeatureList;
}

public class ObservableCollection<T> :    System.Collections.ObjectModel.ObservableCollection<T>
{
    /// <summary> 
    /// Adds the elements of the specified collection to the end of the ObservableCollection.
    /// </summary> 
    public void AddRange( IEnumerable<T> collection )
    {
        foreach( T i in collection )
        {
            Items.Add( i );
        }
        OnCollectionChanged( new NotifyCollectionChangedEventArgs( NotifyCollectionChangedAction.Reset ) );
    }
}

注意:

  • 我可以这样做FeatureList.AddRange(_featureListBuffer);它工作得很好,但我想要这样的GetFeaturelist().AddRange(_featureListBuffer);

如何将项添加到方法内部的Observable集合中

您的代码看起来完全有效,应该可以正常工作。

我能想到的唯一一件事是你可能有一个名称冲突:你的"ObservableCollection"与你派生的基础"ObservableCollection"具有完全相同的名称。这很容易出现各种打字错误和错误导入。

如果在您定义private ObservableCollection<Feature> GetFeaturelist()的地方有using System.Collections.ObjectModel,那么方法签名实际上可能认为它返回BASE 0 -coll,而不是您可能希望它返回的派生0 -coll。在这种情况下,代码将无法编译,ERRORs窗口应该清楚地说明错误所在。

首先,检查方法定义处的用法。如果它们是正确的,并且代码正确编译,那么,在调用站点放置断点,并检查实际使用的是哪个集合。然后,如果你仍然有问题,用这些数据更新你的帖子。

ObervableCollection不支持AddRange()方法