Dodaję TreeViewItems ręcznie w kodzie z tyłu i chciałbym użyć DataTemplate, aby je wyświetlić, ale nie mogę dowiedzieć się, jak to zrobić. Mam nadzieję, że zrobię coś takiego, ale elementy są wyświetlane jako puste nagłówki. Co ja robię źle?Korzystanie z ItemTemplate dla TreeView podczas dodawania elementów w kodzie
XAML
<Window x:Class="TreeTest.WindowTree"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WindowTree" Height="300" Width="300">
<Grid>
<TreeView Name="_treeView">
<TreeView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" />
<TextBlock Text="{Binding Path=Age}" />
</StackPanel>
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</Grid>
</Window>
Za kodem
using System.Windows;
using System.Windows.Controls;
namespace TreeTest
{
public partial class WindowTree : Window
{
public WindowTree()
{
InitializeComponent();
TreeViewItem itemBob = new TreeViewItem();
itemBob.DataContext = new Person() { Name = "Bob", Age = 34 };
TreeViewItem itemSally = new TreeViewItem();
itemSally.DataContext = new Person() { Name = "Sally", Age = 28 }; ;
TreeViewItem itemJoe = new TreeViewItem();
itemJoe.DataContext = new Person() { Name = "Joe", Age = 15 }; ;
itemSally.Items.Add(itemJoe);
_treeView.Items.Add(itemBob);
_treeView.Items.Add(itemSally);
}
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
}
Oba rozwiązania działają. Przepraszam, że tak długo wróciłem do ciebie. W końcu nie używałem drzewa, zamiast tego zaimplementowałem niestandardowy hierarchiczny listbox. –
Hurra dla Matta! właśnie to, czego potrzebowałem (drugie rozwiązanie) –