快速查询ObservableCollection

时间:2013-09-16 08:13:24

标签: c# wcf

我有一个ObservableCollection绑定到WCF的XAML视图中的模板。 我需要能够通过名称

随机更改其中的元素

目前我有两个集合,一个ObservableCollection<MyElement>,另一个Dictionary<String, MyElement>,用于翻译元素的名称

一切正常,但我需要做一些功能来保持这两个系列之间的完整性;如:

void AddElement(MyElement a)
{
  dictionary.Add(a.Name, a);
  observableCollection.Insert(0, a);
}

有更好的方法吗?我知道我可以使用LINQ来查询它,但它仍然会在内部使用迭代遍历每个元素来找到我需要的元素 - 我需要更快的方式

2 个答案:

答案 0 :(得分:2)

您可以为此创建自己的ObservableDictionary

public class ObservableDictionary <TKey, TValue> :
        IDictionary<TKey, TValue>,
        ICollection<KeyValuePair<TKey, TValue>>,
        IEnumerable<KeyValuePair<TKey, TValue>>,
        IDictionary,
        ICollection,
        IEnumerable,
        ISerializable,
        IDeserializationCallback,
        INotifyCollectionChanged,
        INotifyPropertyChanged{ }

http://blogs.microsoft.co.il/blogs/shimmy/archive/2010/12/26/observabledictionary-lt-tkey-tvalue-gt-c.aspx

http://drwpf.com/blog/2007/09/16/can-i-bind-my-itemscontrol-to-a-dictionary/

答案 1 :(得分:1)

我不确定以下是否有帮助

当项目被添加到ObservableCollection中时,您可以将其反转并将项目添加到字典中,您可以捕获collectionchanged事件并将项目添加到字典中

CollectionChanged