/// <summary> /// 处理开关按钮,展开/折叠处理子节点 /// </summary> /// <param name="index">Index.</param> protected void ToggleNode(int index) { //当前开关按钮的节点 var node = NodesList[index]; if (node.Node.Nodes == null) { return; } NodesList.BeginUpdate(); //需要折叠 if (node.Node.IsExpanded) { var range = node.Node.AllUsedNodesCount; if (range > 0) { MoveSelectedIndiciesUp(index, range); NodesList.RemoveRange(index + 1, range); } node.Node.PauseObservation = true; node.Node.IsExpanded = false; node.Node.PauseObservation = false; node.Node.UsedNodesCount = 0; } else//需要展开 { var sub_list = new ObservableList <ListNode <TItem> >(); var used = Nodes2List(node.Node.Nodes, node.Depth + 1, sub_list); MoveSelectedIndiciesDown(index, sub_list.Count); NodesList.InsertRange(index + 1, sub_list); node.Node.PauseObservation = true; node.Node.IsExpanded = true; node.Node.PauseObservation = false; node.Node.UsedNodesCount = used; } NodesList.EndUpdate(); }