public int Compare(Stop x, Stop y) { Point relativePosition1 = KeyboardNavigationTarget.GetTopBoundPosition(KeyboardNavigationTarget.GetAbsoluteBounds(x.Element)) - currentPosition; Point relativePosition2 = KeyboardNavigationTarget.GetTopBoundPosition(KeyboardNavigationTarget.GetAbsoluteBounds(y.Element)) - currentPosition; double distance1 = relativePosition1.Y < 0 ? -relativePosition1.GetLengthSqr() : relativePosition1.GetLengthSqr(); double distance2 = relativePosition2.Y < 0 ? -relativePosition2.GetLengthSqr() : relativePosition2.GetLengthSqr(); return(distance1.CompareTo(distance2)); }
public TopBoundStopComparer(Stop currentStop) { currentPosition = KeyboardNavigationTarget.GetTopBoundPosition(KeyboardNavigationTarget.GetAbsoluteBounds(currentStop.Element)); }