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 を返すと考える可能性があります。このような場合、コードはコンパイルされず、エラー ウィンドウに何が問題なのかが明確に示されます。

まず、メソッド定義のサイトで usings を確認します。それらが正しく、コードが適切にコンパイルされる場合は、呼び出しサイトにブレークポイントを配置し、実際にどのコレクションが使用されているかを確認します。それでも問題が解決しない場合は、これらのデータで投稿を更新してください。

于 2013-02-27T12:35:29.603 に答える
-1

ObervableCollectionAddRange()メソッドをサポートしていません。

于 2017-06-12T08:50:00.070 に答える