簡體   English   中英

在WPF C#TreeView中獲取子節點的父節點

[英]Get the Parent node of a Child in WPF C# TreeView

我知道使用WPF在C#中編程與傳統的C#程序不同,因此大多數在線資料都沒有說明我需要的內容。

我的WPF窗口中有一個TreeView控件,其中有父節點和子節點。 我想將它們存儲在Node類型的列表中(id,name,parent)。

在此輸入圖像描述

我使用這個得到了所選項目/節點的名稱:

private void TreeViewItem_OnItemSelected(object sender, RoutedEventArgs e)
{
    TreeViewItem item = treeView.SelectedItem as TreeViewItem;
    nameTxt.Text = item.Header.ToString();
}

我嘗試在使用它之前立即獲取子節點的Parent:

TreeViewItem item = treeView.SelectedItem as TreeViewItem;
nameTxt.Text = item.Parent.ToString();

但是,這將返回根父(A)而不是子父(即2)。

我應該做些什么來改變孩子的直接父母而不是根父母? :)

編輯:這是XAML

<TreeView Name="treeView" HorizontalAlignment="Left" Height="564" Margin="10,68,0,0" VerticalAlignment="Top" Width="363">
     <TreeViewItem TreeViewItem.Selected="TreeViewItem_OnItemSelected"  Header="A" IsExpanded="True" Height="554" FontSize="18">
                <TreeViewItem Header="1" />
                <TreeViewItem Header="2" />
     </TreeViewItem>
</TreeView>

創建了一個小例子來演示您的問題

MainWindow.xaml中

 <TreeView Name="tree">
    <TreeView>
        <TreeViewItem Header="North America" Selected="TreeViewItem_OnItemSelected">
            <TreeViewItem Header="USA">
                <TreeViewItem Header="New York"/>
                <TreeViewItem Header="Las Vegas"/>
                <TreeViewItem Header="Washington"/>
            </TreeViewItem>
            <TreeViewItem Header="Canada">
                <TreeViewItem Header="Toronto"/>
                <TreeViewItem Header="Quebec"/>
                <TreeViewItem Header="Montreal"/>
            </TreeViewItem>
            <TreeViewItem Header="Mexico"></TreeViewItem>
        </TreeViewItem>
    </TreeView>
</TreeView>

在Code Behind中,即MainWindow.xaml.cs

 private void TreeViewItem_OnItemSelected(object sender, RoutedEventArgs e)
    {
        TreeViewItem item = e.OriginalSource as TreeViewItem;
        if (item != null)
        {
            ItemsControl parent = GetSelectedTreeViewItemParent(item);

            TreeViewItem treeitem = parent as TreeViewItem;
            string MyValue= treeitem .Header.ToString();//Gets you the immediate parent
        }
    }
    public ItemsControl GetSelectedTreeViewItemParent(TreeViewItem item)
    {
        DependencyObject parent = VisualTreeHelper.GetParent(item);
        while (!(parent is TreeViewItem || parent is TreeView))
        {
            parent = VisualTreeHelper.GetParent(parent);
        }

        return parent as ItemsControl;
    }

它完成了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM