Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > TreeView родительский елемент.


Автор: Lokki23 17.5.2014, 12:26
Добрый день.

У меня возникла такая проблемка. 
Не подскажите как имея дочерний елемент получить родительский. 

Я получаю елемент который выбран. Cвойство Selected.

 TreeViewItem d = (TreeViewItem)TreeV.SelectedItem;





Автор: Экскалупатор 17.5.2014, 12:50
каким бы странным это не казалось, но за это отвечает свойство... Parent

тут главное правильно составить это дерево. т.е. дочерние ноды нужно явно добавлять в родительский, иначе это свойство будет возвращать null.
для примера:
Код

        private void Form1_Load(object sender, EventArgs e)
        {
            //this.treeView1.Nodes[0] - родительский нод, созданный в редакторе или добавленный в коде, к нему явно цепляются дочерние элементы
           this.treeView1.Nodes[0].Nodes.AddRange(new TreeNode[]{new TreeNode("1"), new TreeNode("2"), new TreeNode("3"),  });
        }
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            var parent = this.treeView1.SelectedNode.Parent;
            MessageBox.Show(parent.Text);//после клика покажет текст из родительского нода
        }

Автор: Lokki23 17.5.2014, 13:21
Вы пишите про TreeView в WindowsForms а я работаю в WPF.

Тут немного другой TreeView в нем нет например Nodes. Здесь я так понял Items.

Автор: Экскалупатор 17.5.2014, 16:39
да принцип тот же, то же самое свойство.
Код

<TreeView Height="250" HorizontalAlignment="Left" Margin="32,32,0,0" Name="treeView1" VerticalAlignment="Top" Width="143" SelectedItemChanged="treeView1_SelectedItemChanged">
            <TreeViewItem Header="wqe">
                <TreeViewItem Header="123" />
                <TreeViewItem Header="234">
                    <TreeViewItem Header="0" />
                    <TreeViewItem Header="9" />
                    <TreeViewItem Header="8" />
                </TreeViewItem>
                <TreeViewItem Header="345" />
                <TreeViewItem Header="456" />
            </TreeViewItem>
        </TreeView>


Код

        private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
        {
            var d = (TreeViewItem)this.treeView1.SelectedItem;
            var parent = (TreeViewItem)d.Parent;
            MessageBox.Show(parent.Header.ToString());
        }

Автор: Lokki23 18.5.2014, 11:43
Спс. Работает как часы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)