In TreeView_Loaded, we create 2 instances of TreeViewItem objects. For each item, we set the Header, and use a string array for the sub-items.
<Window x:Class=
"WpfApplication20.MainWindow"
xmlns=
"http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x=
"http://schemas.microsoft.com/winfx/2006/xaml"
Title=
"MainWindow" Height=
"350" Width=
"525">
<Grid>
<TreeView
HorizontalAlignment=
"Left"
Height=
"200"
Margin=
"10,10,0,0"
VerticalAlignment=
"Top"
Width=
"300"
Loaded=
"TreeView_Loaded"
SelectedItemChanged=
"TreeView_SelectedItemChanged"
Background=
"AliceBlue"/>
</Grid>
</Window>
using System.Windows;
using System.Windows.Controls;
namespace WpfApplication20
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void TreeView_Loaded(object sender, RoutedEventArgs e)
{
// ... Create a TreeViewItem.
TreeViewItem item = new TreeViewItem();
item.Header =
"Computer";
item.ItemsSource = new string[] {
"Monitor",
"CPU",
"Mouse" };
// ... Create a second TreeViewItem.
TreeViewItem item2 = new TreeViewItem();
item2.Header =
"Outfit";
item2.ItemsSource = new string[] {
"Pants",
"Shirt",
"Hat",
"Socks" };
// ... Get TreeView reference and add both items.
var tree = sender as TreeView;
tree.Items.Add(item);
tree.Items.Add(item2);
}
private void TreeView_SelectedItemChanged(object sender,
RoutedPropertyChangedEventArgs<object> e)
{
var tree = sender as TreeView;
// ... Determine type of SelectedItem.
if (tree.SelectedItem is TreeViewItem)
{
// ... Handle a TreeViewItem.
var item = tree.SelectedItem as TreeViewItem;
this.Title =
"Selected header: " + item.Header.ToString();
}
else if (tree.SelectedItem is string)
{
// ... Handle a string.
this.Title =
"Selected: " + tree.SelectedItem.ToString();
}
}
}
}