02.動的に項目を追加する
ツリービューにルート項目を追加する場合はTreeViewクラスのItemsプロパティが持つAddメソッドを使用し、子項目を追加する場合はTreeViewItemクラスのItemsプロパティが持つAddメソッドを使用します。
下記は[追加]ボタンがクリックされた時に、ルート項目に子項目を追加する例です。

<DockPanel LastChildFill="True">
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top" Margin="3">
<TextBlock Text="追加項目名:"/>
<TextBox Name="TextBox1" Width="100" />
<Button Name="Button1" Content="追加"/>
</StackPanel>
<TreeView>
<TreeViewItem Name="rootItem" Header="親" />
</TreeView>
</DockPanel>
<TextBlock Height="23" HorizontalAlignment="Left" Margin="12,49,0,0"
Text="追加項目名:" VerticalAlignment="Top" />
<TextBox Height="24" HorizontalAlignment="Left" Margin="84,45,0,0"
VerticalAlignment="Top" Width="120" Name="TextBox1" />
<Button Content="追加" Height="23" HorizontalAlignment="Left"
Margin="210,45,0,0" VerticalAlignment="Top"
Width="51" Name="Button1" />
<sdk:TreeView Height="200" HorizontalAlignment="Left" Margin="10,78,0,0"
VerticalAlignment="Top" Width="251">
<sdk:TreeViewItem Header="親" Name="rootItem"/>
</sdk:TreeView>
''' <summary>
''' [追加]ボタンクリック時の処理
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
Dim newItem As New TreeViewItem
'追加する子項目のラベルを設定
newItem.Header = TextBox1.Text
'ルート項目に子項目を追加
rootItem.Items.Add(newItem)
End Sub
/// <summary>
/// [追加]ボタンクリック時の処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Button1_Click(object sender, RoutedEventArgs e)
{
TreeViewItem newItem = new TreeViewItem();
// 追加する子項目のラベルを設定
newItem.Header = TextBox1.Text;
// ルート項目に子項目を追加
rootItem.Items.Add(newItem);
}
ツリービューのルート項目を追加するにはTreeViewクラスのItemsプロパティが持つAddメソッドを使用する。
ツリービュー項目を追加するにはTreeViewItemクラスのItemsプロパティが持つAddメソッドを使用する。
03.選択された項目を取得する
現在選択されている項目を取得するには、TreeViewクラスのSelectedItemプロパティを使用します。また、選択項目が変更されるとSelectedItemChangedイベントが発生します。
下記は、選択された項目をテキストブロックに表示する例です。SelecteItemChangedイベント内で、選択された項目のHeaderプロパティの内容をテキストブロックに表示します。

<DockPanel Name="DockPanel1" LastChildFill="True">
<TextBlock Name="TextBlock1" Margin="3" DockPanel.Dock="Bottom"/>
<TreeView Name="TreeView1" DockPanel.Dock="Top">
<TreeViewItem Header="親1">
<TreeViewItem Header="子1" />
<TreeViewItem Header="子2">
<TreeViewItem Header="孫1" />
<TreeViewItem Header="孫2" />
</TreeViewItem>
</TreeViewItem>
</TreeView>
</DockPanel>
<sdk:TreeView Height="200" HorizontalAlignment="Left" Margin="12,44,0,0"
VerticalAlignment="Top" Width="251" Name="TreeView1">
<sdk:TreeViewItem Header="親">
<sdk:TreeViewItem Header="子1" />
<sdk:TreeViewItem Header="子2">
<sdk:TreeViewItem Header="孫1" />
<sdk:TreeViewItem Header="孫2" />
</sdk:TreeViewItem>
</sdk:TreeViewItem>
</sdk:TreeView>
<TextBlock Height="23" HorizontalAlignment="Left" Margin="12,250,0,0"
Name="TextBlock1" Text="選択項目:" VerticalAlignment="Top" />
''' <summary>
''' 選択項目変更時の処理
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TreeView1_SelectedItemChanged(ByVal sender As System.Object, ByVal e As System.Windows.RoutedPropertyChangedEventArgs(Of System.Object)) Handles TreeView1.SelectedItemChanged
'選択された項目を取得する
Dim selectedItem As TreeViewItem = TreeView1.SelectedItem
'選択項目のラベルをテキストブロックに表示する
TextBlock1.Text = "選択項目:" & selectedItem.Header
End Sub
/// <summary>
/// 選択項目変更時の処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TreeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
// 選択された項目を取得する
TreeViewItem selectedItem = (TreeViewItem)TreeView1.SelectedItem;
// 選択項目のラベルをテキストブロックに表示する
TextBlock1.Text = "選択項目:" + selectedItem.Header;
}
現在選択されている項目を取得するにはTreeViewクラスのSelectedItemプロパティを参照する。
選択項目が変更されたことを知るにはSelectedItemChangedイベントを使用する。
