項目を展開する

スポンサーリンク

ツーリービューの項目は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 = "展開する";        
}
タイトルとURLをコピーしました