//-------------------------------------------------------------------------- public void AddControlPoint(Point pos) { var controlPointData = new GraphReferenceControlPoint(GraphReferenceItem, pos); var controlPointView = new LinkControlPoint(this, controlPointData); GraphReferenceItem.UndoRedo.ApplyDoUndo( () => { GraphReferenceItem.ControlPoints.Add(controlPointData); ControlPoints.Add(controlPointView); RaisePropertyChangedEvent("Link"); }, () => { GraphReferenceItem.ControlPoints.Remove(controlPointData); ControlPoints.Remove(controlPointView); RaisePropertyChangedEvent("Link"); }, "Add Control Point"); }
//-------------------------------------------------------------------------- public LinkControlPoint(GraphNodeDataLink parent, GraphReferenceControlPoint controlPoint) { DataContext = this; LinkParent = parent; this.controlPoint = controlPoint; controlPoint.PropertyChanged += (e, args) => { if (args.PropertyName == "Position") { RaisePropertyChangedEvent("Position"); RaisePropertyChangedEvent("CanvasX"); RaisePropertyChangedEvent("CanvasY"); LinkParent.RaisePropertyChangedEvent("Link"); } else if (args.PropertyName == "Flip") { LinkParent.RaisePropertyChangedEvent("Link"); } }; }