ツーリービューの項目はTreeViewItemクラスのIsExpandedプロパティにTrueを設定すると展開し、Falseを設定すると折りたたむことができます。
下記は、選択された項目を展開/折りたたみする例です。
XAMLの例(WPFの例)
<DockPanel Name="DockPanel1" LastChildFill="True"> <StackPanel Orientation="Horizontal" DockPanel.Dock="Top" Margin="3"> <TextBlock Width="200" Text="選択項目名:" Name="TextBlock1" /> <Button Name="btnExpand" Width="70" Content="展開する" /> </StackPanel> <TreeView Name="TreeView1" DockPanel.Dock="Top"> <TreeViewItem Header="親1" Name="TreeViewItem1" IsExpanded="True"> <TreeViewItem Header="子1" /> <TreeViewItem Header="子2" IsExpanded="True"> <TreeViewItem Header="孫1"> <TreeViewItem Header="曾孫1" /> <TreeViewItem Header="曾孫2" /> <TreeViewItem Header="曾孫3" /> </TreeViewItem> <TreeViewItem Header="孫2" /> </TreeViewItem> </TreeViewItem> </TreeView> </DockPanel>
XAMLの例(Silverlightの例)
<TextBlock Height="23" HorizontalAlignment="Left" Margin="12,49,0,0" Name="TextBlock1" Text="選択項目名:" VerticalAlignment="Top" /> <Button Content="展開する" Height="23" HorizontalAlignment="Left" Margin="191,45,0,0" Name="btnExpand" VerticalAlignment="Top" Width="70" /> <sdk:TreeView Height="220" HorizontalAlignment="Left" Margin="10,78,0,0" Name="TreeView1" VerticalAlignment="Top" Width="251"> <sdk:TreeViewItem Header="親1" Name="rootItem" IsExpanded="True"> <sdk:TreeViewItem Header="子1" /> <sdk:TreeViewItem Header="子2" IsExpanded="True"> <sdk:TreeViewItem Header="孫1"> <sdk:TreeViewItem Header="曾孫1" /> <sdk:TreeViewItem Header="曾孫2" /> <sdk:TreeViewItem Header="曾孫3" /> </sdk:TreeViewItem> <sdk:TreeViewItem Header="孫2" /> </sdk:TreeViewItem> </sdk:TreeViewItem> </sdk:TreeView>
VBの例
'選択項目格納用変数 Private selectedItem As TreeViewItem ''' <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 '選択された項目を取得する selectedItem = DirectCast(TreeView1.SelectedItem, TreeViewItem) If selectedItem Is Nothing Then Return '選択項目のラベルをテキストブロックに表示する TextBlock1.Text = "選択項目名: " & selectedItem.Header 'ボタンのテキストを更新する UpdateContent() End Sub ''' <summary> ''' ツリービュー項目の展開/折りたたみを行う ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> ''' <remarks></remarks> Private Sub btnExpand_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnExpand.Click If selectedItem Is Nothing Then Return '展開と折りたたみを切り替える selectedItem.IsExpanded = Not selectedItem.IsExpanded 'ボタンのテキストを更新する UpdateContent() End Sub ''' <summary> ''' 項目の展開状況に合わせてボタンのテキストを更新する ''' </summary> ''' <remarks></remarks> Private Sub UpdateContent() If selectedItem.IsExpanded Then btnExpand.Content = "折りたたむ" Else btnExpand.Content = "展開する" End If End Sub
C#の例
// 選択項目格納用変数 private TreeViewItem selectedItem; /// <summary> /// ツリービュー項目が選択された場合の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TreeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) { // 選択された項目を取得する selectedItem = (TreeViewItem)TreeView1.SelectedItem; if (selectedItem == null ) return; // 選択項目のラベルをテキストブロックに表示する TextBlock1.Text = "選択項目名: " + selectedItem.Header; // ボタンのテキストを更新する UpdateContent(); } /// <summary> /// ツリービュー項目の展開/折りたたみを行う /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnExpand_Click(object sender, RoutedEventArgs e) { if (selectedItem == null) return; // 展開と折りたたみを切り替える selectedItem.IsExpanded = !selectedItem.IsExpanded; // ボタンのテキストを更新する UpdateContent(); } /// <summary> /// 項目の展開状況に合わせてボタンのテキストを更新する /// </summary> private void UpdateContent() { if (selectedItem.IsExpanded) btnExpand.Content = "折りたたむ"; else btnExpand.Content = "展開する"; }