递归处理

//这里是部分展开
        private void SetPositon(TreeViewItem treeNodeSelected, ItemCollection items)
        {
            if (treeNodeSelected != null)
            {
                View vSelected = treeNodeSelected.Tag as View;
                if (vSelected != null)
                {
                    foreach (TreeViewItem item in items)
                    {
                        if (item != null)
                        {
                            View vTmp = item.Tag as View;
                            if (vTmp != null)
                            {
                                if (vTmp.Value(0, "zj").ToString() == vSelected.Value(0, "zj").ToString())
                                {
                                    //选中匹配项
                                    item.IsSelected = true;
                                    ZLLX_SelectedItemChanged(ZLLX, null);//调用该方法,使检索发生
                                    //找到后,往回展开
                                    BackExpanded(item);
                                    break;
                                }
                                else
                                {
                                    if (item.Items.Count > 0)
                                    {
                                        SetPositon(treeNodeSelected, item.Items);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        //往回展开
        private void BackExpanded(TreeViewItem item)
        {
            if (item.Parent.GetType() == typeof(TreeViewItem))//说明是根节点
            {
                (item.Parent as TreeViewItem).IsExpanded = true;
                BackExpanded(item.Parent as TreeViewItem);
            }
        }

        //双击资料记录,查看和下载资料
        private void ZLK_DoubleClick(object sender, DataGridRowClickedArgs e)
        {
            TreeViewItem treeNode = ZLLX.SelectedItem as TreeViewItem;
            if (treeNode != null)
            {
                XZ xz = treeNode.Header as XZ;
                if (xz != null)
                {
                    //图像
                    ImageSource imgSource = xz.ImageSource;
                    //资料信息
                    View vZLK = ZLK.DataSource as View;
                    if (vZLK != null)
                        if (vZLK.Rows.Count > 0)
                        {
                            Row row = ZLK.DataGrid.SelectedItem as Row;
                            if (row != null)
                            {
                                View vTmp = viewZL.CopyStructure();
                                vTmp.Rows.Add(row);
                                ZLCK card = new ZLCK(vTmp, imgSource);
                                card.Show();
                            }
                        }
                }
            }
        }

原文地址:https://www.cnblogs.com/changbaishan/p/3210715.html