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イベントを使用する。