1

我有一个 ObservableCollection 绑定到 WCF 的 XAML 视图中的模板。我需要能够通过名称随机更改其中的元素

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

一切正常,但我需要创建一些函数来保持这两个集合之间的完整性;如:

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

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

4

2 回答 2

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/

于 2013-09-16T08:22:07.520 回答
1

我不确定以下是否有帮助

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

收藏已更改

于 2013-09-16T08:18:09.147 回答