0

Silverlight TreeView を使用しています。コントロールが読み込まれると、すべてのノードが閉じられます。ノードの 1 つをクリックすると、その開いた親ノードの下にあるすべての子ノードを展開する必要があります。どうすればいいですか?TreeView に関する私の経験は非常に限られているため、サンプル コードは非常に役立ちます。ありがとう!

4

1 に答える 1

0

各 TreeViewItem のExpandedイベントにハンドラーをアタッチします。次に、子のツリーをトラバースし、各ノードを展開します。

シンプルな XAML:

        <sdk:TreeView>
        <sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="One"></sdk:TreeViewItem>
        <sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Two">
            <sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Three">
                <sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Four">
                    <sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Five" />
                </sdk:TreeViewItem>
            </sdk:TreeViewItem>
        </sdk:TreeViewItem>
    </sdk:TreeView>

コードビハインド:

    private void TreeViewItem_OnExpanded(object sender, RoutedEventArgs e)
    {
        TreeViewItem tvi = sender as TreeViewItem;
        Debug.Assert(tvi != null);

        if (tvi.HasItems) { ExpandChildren(tvi); }
    }

    private void ExpandChildren(TreeViewItem tvi)
    {
        foreach (var item in tvi.Items)
        {
            if (item is TreeViewItem) { ExpandChildren(item as TreeViewItem); }
        }
        tvi.IsExpanded = true;
    }

ただし、TreeView.ItemTemplate でイベント ハンドラーを設定する方法がわかりません。
おそらく別の読者がそれを行う方法を知っています...?

于 2013-10-30T17:58:12.643 に答える