不使用 LINQ 更新 ObservableCollection 中的单个项目
Update Single Item in the ObservableCollection without LINQ
我正在尝试在网络上创建 Components
运行 的列表。我正在尝试获取 ObservableCollection
中的所有组件。 ObservableCollection<ClsComponent>
现在我的问题是,如果集合中的某个组件发生更改/修改,我如何才能将其反映到我的 ObservableCollection
组件
- 有没有办法直接在集合本身中更改它?
- 快速有效的方法是什么?
我试过:使用 LINQ 更改它:在集合中找到 Component
并更改它?
var CompFound = Components.FirstOrDefault(x=>x.Id == myId);
Components.Remove(CompFound);
Components.Add(UpdatedComp);
我非常确定应该有更优化的方法来执行此操作。请提出建议。
编辑
我正在尝试在可以获取 Source Component
和 Destination Component
参数的函数中编写代码。函数看起来像这样
public void UpdateComponent(ClsComponent SourceComp, ClsComponent DestComp)
{
//do something here
}
函数执行后,我想用目标组件替换源组件。
最有效的方法之一是使用字典。有 ObservableDictionary 的实现,它会为您提供 Observable 行为,同时允许对对象进行基于键的快速访问。
检查此 Whosebug question。它包括微软的
它应该像 ObservableCollection 一样工作,除了它还是一个字典。所以你可以创建 ObservableDictionary<Int,ClsComponent>
要替换值只需调用
Components[myId] = destComp
我相信这可能对您有用。我相信您可能正在寻找这个
Components.Insert(Components.IndexOf(SourceComp), DestComp);
Components.Remove(SourceComp);
我正在尝试在网络上创建 Components
运行 的列表。我正在尝试获取 ObservableCollection
中的所有组件。 ObservableCollection<ClsComponent>
现在我的问题是,如果集合中的某个组件发生更改/修改,我如何才能将其反映到我的 ObservableCollection
组件
- 有没有办法直接在集合本身中更改它?
- 快速有效的方法是什么?
我试过:使用 LINQ 更改它:在集合中找到 Component
并更改它?
var CompFound = Components.FirstOrDefault(x=>x.Id == myId);
Components.Remove(CompFound);
Components.Add(UpdatedComp);
我非常确定应该有更优化的方法来执行此操作。请提出建议。
编辑
我正在尝试在可以获取 Source Component
和 Destination Component
参数的函数中编写代码。函数看起来像这样
public void UpdateComponent(ClsComponent SourceComp, ClsComponent DestComp)
{
//do something here
}
函数执行后,我想用目标组件替换源组件。
最有效的方法之一是使用字典。有 ObservableDictionary 的实现,它会为您提供 Observable 行为,同时允许对对象进行基于键的快速访问。 检查此 Whosebug question。它包括微软的
它应该像 ObservableCollection 一样工作,除了它还是一个字典。所以你可以创建 ObservableDictionary<Int,ClsComponent>
要替换值只需调用
Components[myId] = destComp
我相信这可能对您有用。我相信您可能正在寻找这个
Components.Insert(Components.IndexOf(SourceComp), DestComp);
Components.Remove(SourceComp);