• WPF TreeView 后台C#选中指定的Item, 需要遍历


      
            private TreeViewItem FindTreeViewItem(ItemsControl container, object item)
            {
                if (null == container || null == item)
                {
                    return null;
                }

                if (container.DataContext == item)
                {
                    return container as TreeViewItem;
                }

                int count = container.Items.Count;
                for (int i = 0; i < count; i++)
                {
                    TreeViewItem subContainer = (TreeViewItem)container.ItemContainerGenerator.ContainerFromIndex(i);

                    if (null == subContainer)
                    {
                        continue;
                    }

                    // Search the next level for the object.
                    TreeViewItem resultContainer = FindTreeViewItem(subContainer, item);
                    if (null != resultContainer)
                    {
                        return resultContainer;
                    }
                }

                return null;
            }



    /////使用上述方法遍历 , 然后设置IsSelected属性

       private static void SelectedItemChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
            {
                //
                SelectedProtocolControl spc = d as SelectedProtocolControl;

                if (null != spc)
                {
                    if (e.NewValue != spc.trvSelectedProtocol.SelectedItem)
                    {
                        //TreeViewItem tviNew = spc.trvSelectedProtocol.ItemContainerGenerator.ContainerFromItem(e.NewValue) as TreeViewItem;
                        TreeViewItem tviNew = spc.FindTreeViewItem(spc.trvSelectedProtocol, e.NewValue);
                        if (null != tviNew)
                        {
                            tviNew.IsSelected = true;
                        }
                    }

                    if (null != e.OldValue)
                    {
                        //TreeViewItem tviOld = spc.trvSelectedProtocol.ItemContainerGenerator.ContainerFromItem(e.OldValue) as TreeViewItem;
                        TreeViewItem tviOld = spc.FindTreeViewItem(spc.trvSelectedProtocol, e.OldValue);
                        if (null != tviOld)
                        {
                            tviOld.IsSelected = false;
                        }
                    }
                }

                System.Diagnostics.Debug.WriteLine("SelectedItemChanged...");
            }





    https://muzizongheng.blog.csdn.net/
  • 相关阅读:
    Cassandra开发入门文档第三部分(非规范化关系结构、批处理)
    Cassandra开发入门文档第二部分(timeuuid类型、复合主键、静态字段详解)
    Cassandra开发入门文档第一部分
    Flume的Source、Sink总结,及常用使用场景
    Libgdx学习笔记:分享自己写的异步加载
    jquery easyui toolbar 分割线问题
    easyui datagrid设置fit: true后,页面显示不全的情况
    CentOS下安装JDK1.7
    CentOS 7搭建SVN服务器
    SWT中ole/activex实践--操作word的一个例子
  • 原文地址:https://www.cnblogs.com/muzizongheng/p/3166601.html
Copyright © 2020-2023  润新知