private void Origin_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
Point startBezierPoint, endBezierPoint;
if (HostCanvas.GraphFlowDirection == GraphFlowDirections.Horizontal)
{
startBezierPoint = StartPort.Origin.Point +
new Vector((StartPort.Origin.Point - EndPort.Origin.Point).Length/2, 0);
endBezierPoint = EndPort.Origin.Point +
new Vector(-(StartPort.Origin.Point - EndPort.Origin.Point).Length/2, 0);
}
else
{
startBezierPoint = StartPort.Origin.Point +
new Vector(0, (StartPort.Origin.Point - EndPort.Origin.Point).Length/2);
endBezierPoint = EndPort.Origin.Point +
new Vector(0, -(StartPort.Origin.Point - EndPort.Origin.Point).Length/2);
}
StartBezierPoint.X = startBezierPoint.X;
StartBezierPoint.Y = startBezierPoint.Y;
EndBezierPoint.X = endBezierPoint.X;
EndBezierPoint.Y = endBezierPoint.Y;
srtEllipse.UpdateLayout();
Canvas.SetLeft(srtEllipse, StartPort.Origin.X - srtEllipse.ActualWidth/2);
Canvas.SetTop(srtEllipse, StartPort.Origin.Y - srtEllipse.ActualHeight/2);
Canvas.SetLeft(endEllipse, EndPort.Origin.X - endEllipse.ActualWidth/2);
Canvas.SetTop(endEllipse, EndPort.Origin.Y - endEllipse.ActualHeight/2);
}