private void canvasWall_MouseDown(object sender, MouseButtonEventArgs e) { Point mousePoint = e.GetPosition(sender as Canvas); RockViewModel nearestRockOnWall = rocksOnWallViewModel.GetRockInListByCanvasPoint(mousePoint); if (nearestRockOnWall != null) { rocksOnRouteViewModel.SelectedRockOnRoute = rocksOnRouteViewModel.FindRockOnRouteViewModel(nearestRockOnWall); bool isRockAlreadyOnTheRoute = !rocksOnRouteViewModel.IsSelectedRockOnRouteNull(); if (!isRockAlreadyOnTheRoute) // new rock on route { rocksOnRouteViewModel.SelectedRockOnRoute = new RockOnRouteViewModel { MyRockViewModel = nearestRockOnWall }; rocksOnRouteViewModel.AddSelectedRockToRoute(); switch (routeSetClimbMode) { case ClimbMode.Training: SetSelectedTrainingRockSeqNo(true); break; case ClimbMode.Boulder: default: SetSelectedBoulderRockToIntermediate(); break; } } } }