【问题标题】:Silverlight TreeView expand all nodes under top nodeSilverlight TreeView 展开顶部节点下的所有节点
【发布时间】:2013-11-10 08:40:00
【问题描述】:

我正在使用 Silverlight TreeView。当控件加载时,所有节点都关闭。当我单击其中一个节点时,我需要 all 展开该打开的父节点下的子节点。我该怎么做呢?我在 TreeView 方面的经验非常有限,因此示例代码真的很有帮助。谢谢!

【问题讨论】:

    标签: c# silverlight treeview silverlight-5.0


    【解决方案1】:

    将处理程序附加到每个 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 中设置事件处理程序。
    也许另一位读者知道如何做到这一点......?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 2016-11-18
      • 2012-03-10
      • 1970-01-01
      • 2014-07-08
      相关资源
      最近更新 更多