WPF Ієрархічне дерево

2075 / 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);
  }
}