1

我无法将项目添加到方法内的 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);
4

2 回答 2

0

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

我能想到的唯一一件事是您可能会遇到名称冲突:您的“ObservableCollection”与您从中派生的基本“ObservableCollection”具有完全相同的名称。这很容易出现各种拼写错误和错误导入。

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

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

于 2013-02-27T12:35:29.603 回答
-1

ObervableCollection不支持AddRange()方法。

于 2017-06-12T08:50:00.070 回答