Ich füge TreeViewItems manuell im Code zurück und möchte ein DataTemplate verwenden, um sie anzuzeigen, kann aber nicht herausfinden, wie. Ich hoffe, etwas wie das zu tun, aber die Einzelteile werden als leere Überschriften angezeigt. Was mache ich falsch?Verwenden von ItemTemplate für eine TreeView beim Hinzufügen von Elementen im Code
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>
Hinter Code
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; }
}
}
Beide Lösungen funktionieren. Entschuldige, dass du so lange gebraucht hast, um dich zu erreichen. Ich habe am Ende keinen Baum verwendet, sondern stattdessen eine benutzerdefinierte hierarchische Listbox implementiert. –
Hurra für Matt! genau das, was ich brauchte (die zweite Lösung) –