【问题标题】:How to GetAllChildren of a SelectedItem如何获取 SelectedItem 的所有子项
【发布时间】: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


【解决方案1】:

我可能错了,但对我来说,您似乎在问如何找到一个等于 SelectedItem 的节点并向其添加一个新节点。你为什么不直接使用 SelectedItem.Add 呢???它会为您节省按引用搜索的 equals。

要计算孩子的数量,只需使用 Linq Count() 方法 :)

【讨论】:

  • 您可能要补充一点,我使用SelectedItem.Children.Count() 获取子节点数,然后使用SelectedItem.Children.Add() 添加节点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多