如何将项添加到方法内部的Observable集合中
本文关键字:内部 Observable 集合 方法 添加 | 更新日期: 2023-09-27 18:01:17
我不能添加项到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);
您的代码看起来完全有效,应该可以正常工作。
我能想到的唯一一件事是你可能有一个名称冲突:你的"ObservableCollection"与你派生的基础"ObservableCollection"具有完全相同的名称。这很容易出现各种打字错误和错误导入。
如果在您定义private ObservableCollection<Feature> GetFeaturelist()
的地方有using System.Collections.ObjectModel
,那么方法签名实际上可能认为它返回BASE 0 -coll,而不是您可能希望它返回的派生0 -coll。在这种情况下,代码将无法编译,ERRORs窗口应该清楚地说明错误所在。
首先,检查方法定义处的用法。如果它们是正确的,并且代码正确编译,那么,在调用站点放置断点,并检查实际使用的是哪个集合。然后,如果你仍然有问题,用这些数据更新你的帖子。
ObervableCollection
不支持AddRange()
方法