c# - 从 Observable 集合中删除

标签 c# silverlight

我有一个可观察的集合,我想从中删除一个特定的实例项。

例如

data[1].ChildElements[0].ChildElements[1].ChildElements.RemoveAt(1);

然而,这工作正常,因为这与从 TreeView 中删除子元素有关,我想根据单击 TreeView 的级别动态创建上述语句。所以我想:

data[0].ChildElements[1].ChildElements.RemoveAt(0);

data[1].ChildElements.RemoveAt(0);

我知道我存储在列表中的父项的 ID,例如

0 1个 01,0

我的问题是,当我不知道列表集合中将包含多少项时,我该如何着手创建上述语句?

谢谢。

最佳答案

有时守旧派做得最好。

  static void RemoveByPath(YourClass currentNode, int[] path)
  {
       for (int i = 0; i < path.Length - 1; i++)
       {
            currentNode = currentNode.ChildElements[path[i]];
       }
       currentNode.ChildElements.RemoveAt(path[path.Length-1]));
  }

如果您没有“Root”YourClass 实例(我怀疑您有,但以防万一)添加:-

static void RemoveByPath(IList<YourClass> data, int[] path)
{
    if (path.Length > 1)
    {
        RemoveByPath(data[path[0]], path.Skip(1).ToArray());
    }
    else
    {
        data.RemoveAt(path[0]);
    }
}

然后,如果您确实想要一些聪明的东西,您可以将它们变成扩展方法。

关于c# - 从 Observable 集合中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7042116/

相关文章:

silverlight - 如果将assemlby .dll添加到项目中,Silverlight是否会下载第三方库?

c# - 将描边应用于 XAML 中的文本 block

c# - 如何在 Silverlight map 控件中将图钉聚集在一起?

silverlight - PRISM 是否适用于大规模应用程序开发?

c# - 一个 list 中有更多不同的项目

c# - 如何使用 css 或 javascript 将 ASP 下拉列表设置为只读?

c# - Visual Studio 中语法着色的粒度

c# - 如何仅终止本地计​​算机的远程桌面 session

c# - Azure ASP .net WebApp 请求超时

c# - 当组合框打开时,Silverlight Combobox 触发 KeyDown 事件