public CurveEditorViewModel([NotNull] IViewModelServiceProvider serviceProvider, [NotNull] SessionViewModel session) : base(serviceProvider.SafeArgument(nameof(serviceProvider))) { if (session == null) { throw new ArgumentNullException(nameof(session)); } Session = session; AddPointCommand = new AnonymousCommand <WindowsPoint>(serviceProvider, AddPoint); ClearCurveCommand = new AnonymousCommand(serviceProvider, ClearSelectedCurve); DeleteSelectedPointsCommand = new AnonymousCommand(serviceProvider, DeleteSelectedPoints); FocusCommand = new AnonymousCommand(serviceProvider, Focus); NavigateToControlPointCommand = new AnonymousCommand <int>(serviceProvider, NavigateToControlPoint); PreviewClickCommand = new AnonymousCommand <WindowsPoint>(serviceProvider, Click); RemoveSelectedCurveCommand = new AnonymousCommand(serviceProvider, RemoveSelectedCurve); ResetViewCommand = new AnonymousCommand <int>(serviceProvider, ResetAxes); SelectCommand = new AnonymousCommand <WindowsRect>(serviceProvider, Select); SelectedControlPoints.CollectionChanged += SelectedControlPointsCollectionChanged; InitializeRendering(); }