我的应用程序速度存在一些问题,并进行了一些性能分析。结果表明,我的应用程序中有很多时间用于 linq 查询,尤其是模型的 ID。我的想法是创建一个可观察的字典,其中 ID 作为键,模型作为值。这工作得很好,比 linq 查询快得多
.Any(x => x.ID == id)
或 linq 查询
.First(x => x.ID == id)
作为 ObservableDictionary 我使用了这个样本
http://blogs.microsoft.co.il/shimmy/2010/12/26/observabledictionarylttkey-tvaluegt-c/
现在的问题是我需要创建一个可以绑定(bind)到我的 View 的 ObservableCollection。我尝试使用 ObservableValue 属性扩展 ObservableDictionary 但这不起作用
public ObservableCollection<TValue> ObservableValues
{
get
{
if (observableValues == null)
{
lock (lockObject)
{
if (observableValues == null)
observableValues = new ObservableCollection<TValue>(Dictionary.Values);
}
}
return observableValues;
}
}
当我将模型添加到我的字典或更新模型时,绑定(bind)到 View 的 ObservableCollection 不会更新。
最佳答案
我能想到的最佳解决方案是保留您的 ObservableDictionnary
一个 ObservableCollection
包含字典的所有值。
然后您必须更改您的类,以便当您在字典中插入/更新/删除一个值时,它在 ObservableCollection
中的作用相同。因此,触发事件以更新 View 。
关于c# wpf MVVM 从 ObservableDictionary 获取 ObservableList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43371237/