2016-10-05 16 views
0

WPFツリービューにノードをプログラムで追加しようとすると、予想通りに動作しません。つまり、葉ノードがあると予想されます。 "C14-5"と "C14-6" "C2-4" TreeViewItemノードを追加する

public class CSTree 
{ 
    public class CS_TREE 
    { 
     int nodeId; int parentId, string description; 
     public CS_TREE(int node, int parent, string desc) 
     { 
      nodeId = node; parentId = parent; description = desc; 
     } 
     public int NodeId { get { return nodeId;} 
     public int ParentId { get { return parentId;} 
     public int Description { get { return description;} 
    }

private static List<CS_TREE> tree = new List<CS_TREE>() new { new CS_TREE(1,0,"Level-0"), new CS_TREE(2,1,"Level-1 A"), new CS_TREE(3,1,"Level-1 B"), new CS_TREE(4,1,"Level-1 C"), new CS_TREE(5,4,"Level-2 C1-4"), new CS_TREE(6,4,"Level-2 C2-4"), new CS_TREE(7,5,"Level-3 C14-5"), new CS_TREE(7,6,"Level-3 C24-6"), } public void PopulateTreeView() { foreach (CS_TREE cst in L_tree) { AddToTree(cst); } } public void AddToTree(CS_TREE cst) { var subitem = new TreeViewItem() { Header = cst.Description, Tag = cst}; if (cst.ParentId == 0) { _rootNode = new TreeViewItem() { Header = cst.Description, Tag = cst }; } else { TreeViewItem node = FindNode(_rootNode, cst); if (node != null) { node.Items.Add(subitem); } else { _rootNode.Items.Add(subitem); } } } private TreeViewItem FindNode(TreeViewItem rootNode, CS_TREE cst) { TreeViewItem rv = null; if (rootNode != null && rootNode.HasItems) { var items = rootNode.Items; foreach (TreeViewItem item in items) { CS_TREE nodeCST = item.Tag as CS_TREE; if (nodeCST.NodeId == cst.ParentId) { return item; } else if (item.HasItems) { FindNode(item, cst); } } } return rv; } private TreeViewItem _rootNode = null; public TreeViewItem Root { get { return _rootNode; } }

}

彼らは、ルートノード "レベル0" の下に表示されるのに対し、読者が正しい方向に私を指すもらえますか?

答えて

0

あなたは見つかったノードを返す必要があります。 ので、代わりの

FindNode(item, cst); 

はまた、あなたがノードで同じNODEID 7 "C14-5" と "C24-6" を使用している

rv = FindNode(item, cst); 
if (rv != null) 
    return rv; 

を行います。あなたが "C24-6" の下の任意のノードをしたい場合は

だから、あなたが書くべき

new CS_TREE(8,6,"Level-3 C24-6"), 
関連する問題