2014-02-11 45 views
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)); 

現在我想GetAllChildren基於關我SelectedItem屬性,它是全功能的。用GetAllChildren方法可以做到這一點嗎?如果是這樣,怎麼樣?

加入1:

SelectedItem屬性的類型爲視圖模型的。 ObservableCollection也是ViewModel類型,所以基本SelectedItem告訴程序哪個ViewModel被選中。

加2:

我不能只是單純地添加到父節點。在添加之前,我必須檢查此程序中有多少兒童因其他原因。

+0

我可能是錯的,但對我來說,你似乎會問如何找到相當於一個的SelectedItem節點,然後添加一個新的節點到它。爲什麼不只是使用SelectedItem.Add而是???它會爲您節省通過引用等於的搜索。 –

+0

如果我這樣做會有同樣的效果嗎?罷工..我需要檢查有多少孩子屬於父節點。 –

+1

這是一個可愛的問題。我認爲它應該有相同的效果,但說實話你是代碼旁邊的人不是我。 Soooo嘗試一下。如果它至少不起作用,我們還知道另一個方法,即如何不去做。愛迪生知道100種方式不製造燈泡。 :) –

回答

1

我可能是錯的,但對我來說,你似乎在問如何找到一個等於SelectedItem的節點並向它添加一個新節點。爲什麼不只是使用SelectedItem.Add而是???它會爲您節省通過引用等於的搜索。

用於計數的孩子剛使用LINQ的計數()方法:)

+0

你可能想補充說我使用'SelectedItem.Children.Count()'得到子的數量,然後'SelectedItem.Children.Add()'來添加節點。 –