/// This is a hack. The issue is that the Carousel view doesn't reflect the CurrentStep binding correctly in the UI. /// The viewmodel is correct. The position property on the CarouselView is correct. But during restarts /// it still doesn't show the correct view template for that step. Instead it shows the last view template. /// So here we scroll back and forth one step to get it to be in sync with the viewmodel. private void UpdateUiStep() { this.uiDispatcher.BeginInvokeOnMainThread(() => { RegistrationViewModel vm = GetViewModel <RegistrationViewModel>(); int step = vm.CurrentStep; if (step < (int)RegistrationStep.Complete) { int otherStep; if (step > 0) { otherStep = step - 1; } else { otherStep = step + 1; } vm.MuteStepSync(); this.CarouselView.ScrollTo(otherStep, position: ScrollToPosition.Center, animate: false); this.CarouselView.ScrollTo(step, position: ScrollToPosition.Center, animate: false); this.uiDispatcher.BeginInvokeOnMainThread(() => vm.UnMuteStepSync()); } }); }