Головна‎ > ‎C# WPF‎ > ‎

Ієрархічне дерево (TreeView)

Додати
tr1.Items.Add("Помідор");
tr1.Items.Add(new TreeViewItem() { Header = "Помідор" });

Показати
tr1.Items.GetItemAt(0).ToString();    // увесь об'єкт

Кількість 
tr1.Items.Count;

Видалити
tr1.Items.RemoveAt(0);
tr1.Items.Remove(tr1.SelectedItem);

Додати піделемент
//1
ItemCollection items = tr1.Items;
TreeViewItem newChild = new TreeViewItem();
newChild.Header = "Батько";
TreeViewItem newChild2 = new TreeViewItem();
newChild2.Header = "Син";
newChild.Items.Add(newChild2);
tr1.Items.Add(newChild);

//2
ItemCollection items = treeView1.Items;           
for (int i =1; i<=10 ; i++)
{
     TreeViewItem newChild = new TreeViewItem();
     newChild.Header = String.Format("Item {0}", i++);
     for (int x = 1; x <= 5; x++)
     {
          TreeViewItem newChild2 = new TreeViewItem();
          newChild2.Header = String.Format("SubItem {0}", x);
          newChild.Items.Add(newChild2);
     }
     treeView1.Items.Add(newChild);
}

Обраний
tr1.SelectedValue;
treeView1.SelectedItem;              //  != null
TreeViewItem selectedTVI = (TreeViewItem)tr1.SelectedItem;
string res = selectedTVI.Header.ToString();

Обраний і два рази вгору
string obr = "";
TreeViewItem selectedTVI = (TreeViewItem)tr1.SelectedItem;
TreeViewItem selectedTVI2 = (TreeViewItem)selectedTVI.Parent;
TreeViewItem selectedTVI3 = (TreeViewItem)selectedTVI2.Parent;
obr += selectedTVI3.Header.ToString() + 
selectedTVI2.Header.ToString() +
selectedTVI.Header.ToString();

Пошук
tr1.Items.IndexOf("Помідор");     // повертає позицію починаючи з 0 чи -1

Вставити на позицію
tr1.Items.Insert(1, "Морква");     // зразу після першого

Зробити виділеним
tr1.Items.IsSelected = true;

Очистити
tr1.Items.Clear();

Чи елемент розкритий
if (item.IsExpanded == true){}

Пробіжатися по дереву рівень перший
foreach (TreeViewItem item in tr1.Items)
{
       MessageBox.Show(item.Header.ToString());
}

Пробіжатися по дереву рівень другий
foreach (TreeViewItem item in treeView1.Items)
{
     foreach (TreeViewItem child in item.Items)
     {

     }
}



Пробіжатися по всім рівням через StringBuilder

StringBuilder l_builder = new StringBuilder();

foreach (TreeViewItem l_item in MyTreeView.Items)
{
    ProcessNodes(l_item, l_builder, 0);
}

MessageBox.Show(l_builder.ToString());


private void ProcessNodes(TreeViewItem node, StringBuilder builder, int level)
{
   builder.Append(new string('\t', level) + node.Header.ToString() + Environment.NewLine);
   foreach (TreeViewItem l_innerNode in node.Items)
   {
       ProcessNodes(l_innerNode, builder, level + 1);
   }
}