如何更新可观察集合组
how to update observable collection group
我已经实现了如下所示的组可观察集合。
分组属性
private ObservableCollection<Grouping<String, Request>> _groupedList = null;
public ObservableCollection<Grouping<String, Request>> GroupedList {
get {
return _groupedList;
}
set {
_groupedList = value;
RaisePropertyChanged(() => GroupedList);
}
}
正在创建列表
var list = new List<Request>();
var grouped = from Model in list
group Model by Model.Done into Group
select new Grouping<string, Request>(Group.Key, Group);
GroupedList = new ObservableCollection<Grouping<string, TModel>>(grouped);
现在我需要在不重新加载完整列表的情况下更新列表中的一项以提高性能。
我确实这样试过,mylist.FirstOrDefault(i => i.Id== mymodel.Id)
;对我不起作用。
我需要选择那个特定的项目,然后使用 linq 或其他东西再次编辑和更新到列表中,但我停留在这里是为了进行组可观察收集,没有有效的细节来做到这一点。任何对此有想法的人请提供帮助。
最后我得到了更新的单个项目,但我需要在没有
的情况下这样做
GroupedList = new ObservableCollection<Grouping<string, TModel>>(grouped);
因为每次它都会创建新列表并绑定到我的 view.Thats 中,但性能仍然很好。
提前致谢。
我从你的问题中了解到,你想在不覆盖整个 ObservableCollection 的情况下推送更新的组。
为此:
var targetGroup = GroupedList.FirstOrDefault(i => i.Id == mymodel.Id);
var targetIndex = GroupedList.IndexOf(targetGroup);
var modifiedGroup = ... //Do whatever you want to do
GroupedList[targetIndex] = modifiedGroup;
这将触发目标分组的'replace'操作。
我已经实现了如下所示的组可观察集合。
分组属性
private ObservableCollection<Grouping<String, Request>> _groupedList = null;
public ObservableCollection<Grouping<String, Request>> GroupedList {
get {
return _groupedList;
}
set {
_groupedList = value;
RaisePropertyChanged(() => GroupedList);
}
}
正在创建列表
var list = new List<Request>();
var grouped = from Model in list
group Model by Model.Done into Group
select new Grouping<string, Request>(Group.Key, Group);
GroupedList = new ObservableCollection<Grouping<string, TModel>>(grouped);
现在我需要在不重新加载完整列表的情况下更新列表中的一项以提高性能。
我确实这样试过,mylist.FirstOrDefault(i => i.Id== mymodel.Id)
;对我不起作用。
我需要选择那个特定的项目,然后使用 linq 或其他东西再次编辑和更新到列表中,但我停留在这里是为了进行组可观察收集,没有有效的细节来做到这一点。任何对此有想法的人请提供帮助。
最后我得到了更新的单个项目,但我需要在没有
的情况下这样做GroupedList = new ObservableCollection<Grouping<string, TModel>>(grouped);
因为每次它都会创建新列表并绑定到我的 view.Thats 中,但性能仍然很好。 提前致谢。
我从你的问题中了解到,你想在不覆盖整个 ObservableCollection 的情况下推送更新的组。
为此:
var targetGroup = GroupedList.FirstOrDefault(i => i.Id == mymodel.Id);
var targetIndex = GroupedList.IndexOf(targetGroup);
var modifiedGroup = ... //Do whatever you want to do
GroupedList[targetIndex] = modifiedGroup;
这将触发目标分组的'replace'操作。