我有一个ObservableCollection绑定到WCF的XAML视图中的模板。 我需要能够通过名称
随机更改其中的元素目前我有两个集合,一个ObservableCollection<MyElement>
,另一个Dictionary<String, MyElement>
,用于翻译元素的名称
一切正常,但我需要做一些功能来保持这两个系列之间的完整性;如:
void AddElement(MyElement a)
{
dictionary.Add(a.Name, a);
observableCollection.Insert(0, a);
}
有更好的方法吗?我知道我可以使用LINQ来查询它,但它仍然会在内部使用迭代遍历每个元素来找到我需要的元素 - 我需要更快的方式
答案 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://drwpf.com/blog/2007/09/16/can-i-bind-my-itemscontrol-to-a-dictionary/
答案 1 :(得分:1)
我不确定以下是否有帮助
当项目被添加到ObservableCollection中时,您可以将其反转并将项目添加到字典中,您可以捕获collectionchanged事件并将项目添加到字典中