В проекте я пытаюсь реализовать "разрыв линии" (то есть при нажатии на линию создается точка, с которой соединяются два элемента)
var p = (sender as Line).DataContext as EdgeLine;
int index = Edgeln.IndexOf(p);
Uzel uz = new Uzel();
vm = new FullElement { SelectedControl = uz, Pos = (e.GetPosition(ic_canvas)), EllipseOfUC = uz.uzel_Uc };
vm.EllipseOfUC.MouseRightButtonDown += EllipseOfUC_MouseRightButtonDown;
vm.EllipseOfUC.MouseRightButtonUp += EllipseOfUC_MouseRightButtonUp;
VisMod.Add(vm);
p.B.EllipseOfUC = vm.EllipseOfUC;
el1 = new EllipseOfElement { EllipseOfUC = p.A.EllipseOfUC, PosOfEllipse = p.A.EllipseOfUC.TransformToVisual(ic_canvas).Transform(new Point(p.A.EllipseOfUC.ActualHeight / 2, p.A.EllipseOfUC.ActualWidth / 2)) };
el2 = new EllipseOfElement { EllipseOfUC = p.B.EllipseOfUC, PosOfEllipse = p.B.EllipseOfUC.TransformToVisual(ic_canvas).Transform(new Point(p.B.EllipseOfUC.ActualHeight / 2, p.B.EllipseOfUC.ActualWidth / 2)) };
connect = new EdgeLine { A = el1, B = el2 };
Edgeln.Add(connect);
p.A.EllipseOfUC = vm.EllipseOfUC;
el1 = new EllipseOfElement { EllipseOfUC = p.A.EllipseOfUC, PosOfEllipse = p.A.EllipseOfUC.TransformToVisual(ic_canvas).Transform(new Point(p.A.EllipseOfUC.ActualHeight / 2, p.A.EllipseOfUC.ActualWidth / 2)) };
el2 = new EllipseOfElement { EllipseOfUC = p.B.EllipseOfUC, PosOfEllipse = p.B.EllipseOfUC.TransformToVisual(ic_canvas).Transform(new Point(p.B.EllipseOfUC.ActualHeight / 2, p.B.EllipseOfUC.ActualWidth / 2)) };
connect2 = new EdgeLine { A = el1, B = el2 };
Edgeln.Add(connect2);
Edgeln.RemoveAt(index);
Но при "осуществлении" этого выдается ошибка:
System.InvalidOperationException: "Указанный элемент Visual и данный элемент Visual имеют разных предков, поэтому преобразование одного элемента Visual в другой осуществить невозможно."
Сборка персонального компьютера от Artline: умный выбор для современных пользователей