如何获取所选项的所有子项

3

在我的程序中,我想获取父节点的所有子节点,以便我可以向其中添加新节点。过去我使用了以下方法:

//This gets all the children of a parent node depending on it's DisplayName
var node = ObservableCollection.GetAllChildren(x => x.Children).Distinct().ToList().First(x => x.DisplayName == nameOfNode);
node.Children.Add(CreateNode(newNodeName));

现在,我想基于我的SelectedItem属性(功能完整)获取其全部子项,使用GetAllChildren方法是否可行?如果可以,请问如何操作? 附加说明1: SelectedItem属性的类型为ViewModel。ObservableCollection也是ViewModel类型,所以SelectedItem告诉程序哪个ViewModel被选中了。 附加说明2: 我不能简单地添加到父节点。在此程序中,在添加之前,我必须检查有多少子项,出于其他原因。

我可能错了,但是在我看来,你似乎在问如何找到一个等于SelectedItem的节点并向其添加一个新节点。为什么不直接使用SelectedItem.Add呢?这样可以避免通过引用相等进行搜索。 - dev hedgehog
1
这是一个有趣的问题。我认为它应该有相同的效果,但说实话,你是靠近代码的人,而不是我。所以试一下吧。如果不起作用,至少我们知道又多了一种不行的方法。爱迪生知道100种不制造电灯泡的方法。 :) - dev hedgehog
好的,这对添加操作很有效!但是在添加之前,我能否检查父节点有多少个子节点? - Eric after dark
它对添加起作用了吗?哇,我猜得相当准确。好的Eric,我不太了解你的实际数据结构,但你可以使用某种linq语句来查找Count()。 - dev hedgehog
我必须做出更正并说SelectedItem.Children.Add()是有效的。 - Eric after dark
显示剩余2条评论
1个回答

1
我可能错了,但在我看来,你似乎是在问如何找到一个与SelectedItem相等的节点,并向其添加一个新节点。为什么不使用SelectedItem.Add呢?这样可以避免通过引用相等进行搜索。
要计算子项数量,只需使用Linq的Count()方法 :)

你可能想要补充一下,我使用了 SelectedItem.Children.Count() 来获取子节点数,然后使用 SelectedItem.Children.Add() 来添加节点。 - Eric after dark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接