2013-02-27 71 views
1

我无法将项目添加到方法内部的Observable集合。如何添加项目到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);
+1

“......没有发生” - 我无法重现您的问题。该代码适用于我。也许你可以添加更多的细节? *什么*不*发生? - 而且*发生了什么? – 2013-02-27 12:29:29

+2

从GetFeatureslist()返回的'ObservableCollection'是__your__可观察集合还是.NET的可观察集合? – Alex 2013-02-27 12:30:26

+1

@Alex:有点令人困惑,但是您可以看到一个新类“ObservableCollection ”是通过从BCL'ObservableCollection '(在不同的命名空间中)派生而定义的。 – 2013-02-27 12:32:36

回答

0

你的代码看起来完全有效的,它应该工作正常。

我能想到的唯一的事情就是你可能有一个名字冲突:你的“ObservableCollection”与你从中派生的基础“ObservableCollection”具有完全相同的名字。这很容易出现各种错别字和错误输入。

如果你定义private ObservableCollection<Feature> GetFeaturelist()的地方,你using System.Collections.ObjectModel,那么该方法的签名实际上可能认为它返回,而不是衍生之一,你可能希望它的BASE邻科尔。在这种情况下,代码将无法编译,并且错误窗口应清楚地说明出了什么问题。

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

-1

ObervableCollection不支持AddRange()方法。

相关问题