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

时间:2013-02-27 11:27:15

标签: c# wpf observablecollection

我无法将项目添加到方法内的Observable集合中。

以下是代码:

  • 我将首先调用GetFeaturelist()方法,这里它返回observable集合然后我将调用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);

2 个答案:

答案 0 :(得分:0)

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

我唯一能想到的是你可能有一个名字冲突:你的“ObservableCollection”与你派生的基础“ObservableCollection”完全相同。这很容易发生各种拼写错误和错误导入。

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

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

答案 1 :(得分:-1)

ObervableCollection不支持AddRange()方法。