WPF TreeView选择一项时,其他同级项折叠

1 篇文章 0 订阅
1 篇文章 0 订阅

1.TreeView的静态扩展类(借鉴http://www.cnblogs.com/sayo/archive/2008/07/23/1249804.html)

   public static class ExtensionMethods
        {
            public static void CollapseOtherItems(this System.Windows.Controls.TreeView treeView, SystemTagNodes selectedNode)
            {
                CollapseItems(treeView, selectedNode);
            }

            private static void CollapseItems(ItemsControl control, SystemTagNodes selectedNode)
            {
                if (control == null)
                {
                    return;
                }

                foreach (Object item in control.Items)
                {

                    System.Windows.Controls.TreeViewItem treeItem = control.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;

                    if (treeItem == null || !treeItem.HasItems)
                    {
                        continue;
                    }
                    if (selectedNode.Tag.StartsWith((item as SystemTagNodes).Tag))
                        treeItem.IsExpanded = true;
                    else
                        treeItem.IsExpanded = false;
                    CollapseItems(treeItem as ItemsControl, selectedNode);
                }
            }


  在网上搜了很多方法,绑定的数据源在折叠时找不到遍历项;唯有此法可解

2.递归的效果是,当某一项的子项很多,为了用户不至于展开过多使空间变得很小,所以让其他同级项折叠

3.在XMAL中添加结点选择事件 TreeViewItem.Selected="tree_Selected" 

 

 private void tree_Selected(object sender, RoutedEventArgs e)
        {
            var item = tree.SelectedItem;
            if (item != null && item is SystemTagNodes)
                this.tree.CollapseOtherItems(item as SystemTagNodes);

       }


4.效果如下

============>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值