public PointRalation(PointDelegateArgs point, PointDelegateArgs parentPoint) { Line = new ScreenSpaceLine2() { Stroke = Brushes.Blue, StrokeDashArray = new DoubleCollection(new[] { 5.0, 3.0 }), StrokeThickness = 1.0 }; var binding = new Binding(parentPoint.Path); binding.Source = parentPoint.Object; binding.Mode = BindingMode.OneWay; BindingOperations.SetBinding(Line, ScreenSpaceLine2.StartPointProperty, binding); DependencyPropertyDescriptor.FromProperty(ScreenSpaceLine2.StartPointProperty, typeof(ScreenSpaceLine2)).AddValueChanged(Line, OnParentPointChanged); parentPoint.Gripper.DragStart += ParentGripper_DragStart; parentPoint.Gripper.DragEnd += ParentGripper_DragEnd; binding = new Binding(point.Path); binding.Source = point.Object; binding.Mode = BindingMode.TwoWay; BindingOperations.SetBinding(Line, ScreenSpaceLine2.EndPointProperty, binding); DependencyPropertyDescriptor.FromProperty(ScreenSpaceLine2.EndPointProperty, typeof(ScreenSpaceLine2)).AddValueChanged(Line, OnPointChanged); _Delta = Line.EndPoint - Line.StartPoint; }
private void Dispose(bool disposing) { if (disposing) { if (Line != null) { BindingOperations.ClearAllBindings(Line); Line = null; } } }