public void Focus() { var count = SelectedControlPoints.Count; switch (count) { case 0: // Focus on whole curve ResetAxes(); break; default: Debug.Assert(SelectedCurve != null); // Focus on the selection var center = (WindowsPoint)(SelectedControlPoints .Select(s => (WindowsVector?)(s as ControlPointViewModelBase)?.ActualPoint) .Aggregate(new WindowsVector(), (c, s) => s.HasValue ? s.Value + c : c) / count); SelectedCurve.XAxis?.Center(center); SelectedCurve.YAxis?.Center(center); break; } }