Перемещение вверх по иерархии TreeViewItem


В моем приложении есть объект TreeView, который заполняется иерархией папок. Я хочу попытаться "подняться" вверх по этой иерархии, чтобы получить путь к выбранному в данный момент элементу. Я попытался использовать DepedencyObject, который вы получаете с TreeViewItem.Родитель, но я в замешательстве, как я могу затем получить родителя в качестве самого TreeViewItem, так что я могу продолжать "восхождение" вверх.

Есть ли способ преобразовать DependencyObject в TreeViewItem?

2 2

2 ответа:

Вы можете подняться из вашего childNode (всегда бросая родителя в treeviewitem unitil его невозможно - > корень treeview достигнут):

string path =(string) ChildItem.Header;

TreeViewItem currentItem = ChildItem;
while (currentItem.Parent is TreeViewItem)
{
    currentItem = currentItem.Parent as TreeViewItem;
    path = (string) currentItem.Header + "/" + path;
}

Это будет работать:

TreeView myTreeview = new TreeView();
//add some nodes here or import.
TreeNode parentnode = myTreeview.SelectedNode.Parent;
//or find a node using:
TreeNode parentnode = myTreeview.Nodes.Find("name"true);
//true searches in all children
//TreeNode.Parent will return null if the node has no parent

Или в методе:

public TreeNode getParent(TreeNode node)
{
    return node.Parent;
}