How to get TreeViewItem from HierarchicalDataTemplate item?

前端 未结 11 1410
失恋的感觉
失恋的感觉 2020-12-02 11:34

I have a TreeView which uses a HierarchicalDataTemplate to bind its data.

It looks like this:



        
11条回答
  •  自闭症患者
    2020-12-02 12:03

    I modified William's recursive search to a more compact version:

    public TreeViewItem GetTreeViewItemFromObject(ItemContainerGenerator container, object targetObject) {
        if (container.ContainerFromItem(targetObject) is TreeViewItem target) return target;
        for (int i = 0; i < container.Items.Count; i++)
            if ((container.ContainerFromIndex(i) as TreeViewItem)?.ItemContainerGenerator is ItemContainerGenerator childContainer)
                if (GetTreeViewItemFromObject(childContainer, targetObject) is TreeViewItem childTarget) return childTarget;
        return null;
    }
    

    One would call it by providing the TreeView instance's ItemContainerGenerator and the target data object:

    TreeViewItem tvi = GetTreeViewItemFromObject(treeView.ItemContainerGenerator, targetDataObject);
    

提交回复
热议问题