2013-02-27 45 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()方法。

相關問題