protected override async void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); var navigationArgs = e.Parameter.ToString(); var loadData = e.NavigationMode != NavigationMode.Back; _viewModel = ServiceLocator.Current.GetInstance <PhotoDetailsViewModel>(loadData); DataContext = _viewModel; if (loadData) { if (navigationArgs.Contains(typeof(PhotoDetailsViewModelArgs).Name)) { var photoDetailsViewModelArgs = SerializationHelper.Deserialize <PhotoDetailsViewModelArgs>(navigationArgs); await _viewModel.LoadState(photoDetailsViewModelArgs); } else if (navigationArgs.Contains(typeof(PhotoDetailsViewModelPhotoIdArgs).Name)) { var photoDetailsViewModelIdArgs = SerializationHelper.Deserialize <PhotoDetailsViewModelPhotoIdArgs>(navigationArgs); await _viewModel.LoadState(photoDetailsViewModelIdArgs); } } }