/// 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());
                }
            });
        }