C# Silverlight TreeView展开顶部节点下的所有节点

C# Silverlight TreeView展开顶部节点下的所有节点,c#,silverlight,treeview,silverlight-5.0,C#,Silverlight,Treeview,Silverlight 5.0,我正在与Silverlight TreeView合作。加载控件时,所有节点都将关闭。当我单击所有所需的其中一个节点时,打开的父节点下的子节点将展开。我该怎么做?我在TreeView方面的经验非常有限,所以示例代码将非常有用。谢谢 将处理程序附加到每个TreeViewItem的展开的事件。然后,遍历子节点树,边走边展开每个节点 简单XAML: <sdk:TreeView> <sdk:TreeViewItem Expanded="TreeViewIt

我正在与Silverlight TreeView合作。加载控件时,所有节点都将关闭。当我单击所有所需的其中一个节点时,打开的父节点下的子节点将展开。我该怎么做?我在TreeView方面的经验非常有限,所以示例代码将非常有用。谢谢

将处理程序附加到每个TreeViewItem的
展开的
事件。然后,遍历子节点树,边走边展开每个节点

简单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>
但是,我不知道如何在TreeView.ItemTemplate中设置事件处理程序。
也许另一位读者知道怎么做

    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;
    }