【发布时间】:2014-02-11 19:25:22
【问题描述】:
在我的程序中,我想获取父节点的所有子节点,以便可以向其添加新节点。过去我使用这种方法:
//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,它功能齐全。使用GetAllChildren 方法可以做到这一点吗?如果有,怎么做?
加法1:
我的 SelectedItem 属性属于 ViewModel 类型。 ObservableCollection 也是ViewModel 类型,所以基本上SelectedItem 告诉程序选择了哪个ViewModel。
加法2:
我不能简单地添加到父节点。在添加之前,我必须检查由于其他原因在此程序中有多少孩子。
【问题讨论】:
-
我可能错了,但对我来说,您似乎在问如何找到一个等于 SelectedItem 的节点并向其添加一个新节点。你为什么不直接使用 SelectedItem.Add 呢???它可以为您节省按引用搜索的 equals。
-
如果我这样做会产生同样的效果吗?罢工..我确实需要检查有多少孩子属于父节点。
-
这是一个可爱的问题。我认为它应该具有相同的效果,但老实说,您是代码旁边的人,而不是我。呜呜试试看。如果它不起作用,至少我们知道另一种方法如何不去做。爱迪生知道 100 种不制造灯泡的方法。 :)
-
好的,这非常适合添加!但是有没有办法在添加父节点之前检查父节点有多少个子节点?
-
添加有用吗?哇,我很擅长猜测。好吧,Eric 我对你的实际数据结构了解不多,但你可以使用某种 linq 语句来找出 Count()。
标签: c# wpf nodes selecteditem