public void AddNode(TreeViewNodeControl node) { node.ParentID = this.id; node.ChangeValue("PID:" + node.ParentID + "\n ID:" + node.id); if (collection == null) { collection = new List <TreeViewNodeControl>(); } if (!TreeViewGlobal.ParentChildPair.ContainsKey(this.id.ToString())) { node.ParentID = this.id; TreeViewGlobal.ParentChildPair.Add(this.id.ToString(), new List <string> { node.id.ToString() }); } else { TreeViewGlobal.ParentChildPair[this.id.ToString()].Add(node.id.ToString()); } collection.Add(node); this.Container.Dispatcher.Invoke(() => { (Container as Grid).Children.Add(node); }); }
private void TreeViewControl_Loaded(object sender, RoutedEventArgs e) { DispatcherTimer DT = new DispatcherTimer(); DT.Interval = TimeSpan.FromSeconds(1); DT.Tick += DT_Tick; lineR.Stroke = Brushes.Black; lineR.X1 = 10; lineR.X2 = 100; lineR.Y2 = 10; lineR.Y1 = 100; lineR.StrokeThickness = 4; DT.Start(); lineR.Name = "TestSub"; Collecstion.TryAdd(lineR.Name, lineR); GR.Children.Add(lineR); bool hasnode = false; var t = new TreeViewNodeControl(GR); t.AddNode(new TreeViewNodeControl(GR)); t.ChangeValue("ID:" + t.id); GR.Children.Add(t); t.collection.FirstOrDefault().AddNode(new TreeViewNodeControl(GR)); t.MoveEvent += T_MoveEvent; TreeViewNodeControl gg; gg = t; T: foreach (var d in gg.collection) { hasnode = false; d.MoveEvent += T_MoveEvent; if (d.collection != null) { hasnode = true; gg = d; } var control = d; if (control.ParentID != 0) { if (!ComplexCollections.ContainsKey(control.ParentID)) { ComplexCollections.Add(control.ParentID, new List <TreeViewNodeControl> { control }); } else { ComplexCollections[control.ParentID].Add(control); } control.ChangeValue("PID:" + control.ParentID + "\n ID:" + control.id); } } if (hasnode) { goto T; } else { goto F; } F: UpdateLine(); TreeViewGlobal.MoveEvent += TreeViewGlobal_MoveEvent; }