public INavigationOperation TryShowAsync(IViewModel viewModel, IDataContext context, IViewModelPresenter parentPresenter) { if (!CanShowViewModel(viewModel, context, parentPresenter)) { return(null); } var tcs = new TaskCompletionSource <object>(); var operation = new NavigationOperation(tcs.Task); context = context.ToNonReadOnly(); context.AddOrUpdate(NavigationConstants.ViewModel, viewModel); var provider = viewModel.GetIocContainer(true).Get <INavigationProvider>(); provider.CurrentNavigationTask.TryExecuteSynchronously(_ => { try { var task = provider.NavigateAsync(operation.ToOperationCallback(), context); tcs.TrySetFromTask(task); } catch (Exception e) { tcs.TrySetException(e); throw; } }); return(operation); }
public virtual INavigationOperation TryShowAsync(IViewModel viewModel, IDataContext context, IViewModelPresenter parentPresenter) { if (!MultiViewModel.ViewModelType.IsInstanceOfType(viewModel)) { return(null); } bool data; if (context.TryGetData(NavigationConstants.SuppressTabNavigation, out data) && data) { return(null); } if (!CanShowViewModel(viewModel, context, parentPresenter)) { return(null); } if (MultiViewModel.ItemsSource.Any(vm => vm == viewModel)) { MultiViewModel.SelectedItem = viewModel; } else { MultiViewModel.AddViewModel(viewModel, true); } var operation = new NavigationOperation(); CallbackManager.Register(OperationType.TabNavigation, viewModel, operation.ToOperationCallback(), context); return(operation); }
public INavigationOperation TryShowAsync(IViewModel viewModel, IDataContext context, IViewModelPresenter parentPresenter) { if (viewModel == this) { return(null); } var operation = new NavigationOperation(); var callback = operation.ToOperationCallback(); //Saving callback to view model state that will allow us to execute it even after app save\restore cycle. _callbackManager.Register(NavigationType, viewModel, callback, context); OnShowViewModel(viewModel); return(operation); }
public virtual INavigationOperation TryShowAsync(IViewModel viewModel, IDataContext context, IViewModelPresenter parentPresenter) { Should.NotBeNull(viewModel, "viewModel"); if (ReferenceEquals(viewModel, _multiViewModel)) { return(null); } bool data; if (context.TryGetData(NavigationConstants.SuppressTabNavigation, out data) && data) { return(null); } if (!CanShowViewModel(viewModel, context, parentPresenter)) { return(null); } MultiViewModel.AddViewModel(viewModel, true); var operation = new NavigationOperation(); CallbackManager.Register(OperationType.TabNavigation, viewModel, operation.ToOperationCallback(), context); return(operation); }
public INavigationOperation TryShowAsync(IViewModel viewModel, IDataContext context, IViewModelPresenter parentPresenter) { if (!CanShowViewModel(viewModel, context, parentPresenter)) return null; var tcs = new TaskCompletionSource<object>(); var operation = new NavigationOperation(tcs.Task); context = context.ToNonReadOnly(); context.AddOrUpdate(NavigationConstants.ViewModel, viewModel); var provider = viewModel.GetIocContainer(true).Get<INavigationProvider>(); provider.CurrentNavigationTask.TryExecuteSynchronously(_ => { try { var task = provider.NavigateAsync(operation.ToOperationCallback(), context); tcs.TrySetFromTask(task); } catch (Exception e) { tcs.TrySetException(e); throw; } }); return operation; }
public virtual INavigationOperation TryShowAsync(IViewModel viewModel, IDataContext context, IViewModelPresenter parentPresenter) { Should.NotBeNull(viewModel, "viewModel"); bool data; if (context.TryGetData(NavigationConstants.SuppressTabNavigation, out data) && data) return null; if (!CanShowViewModel(viewModel, context, parentPresenter)) return null; MultiViewModel.AddViewModel(viewModel, true); var operation = new NavigationOperation(); CallbackManager.Register(OperationType.TabNavigation, viewModel, operation.ToOperationCallback(), context); return operation; }
public virtual INavigationOperation TryShowAsync(IViewModel viewModel, IDataContext context, IViewModelPresenter parentPresenter) { Should.NotBeNull(viewModel, nameof(viewModel)); if (ReferenceEquals(viewModel, _multiViewModel)) return null; bool data; if (context.TryGetData(NavigationConstants.SuppressTabNavigation, out data) && data) return null; if (!CanShowViewModel(viewModel, context, parentPresenter)) return null; if (MultiViewModel.ItemsSource.Contains(viewModel)) MultiViewModel.SelectedItem = viewModel; else MultiViewModel.AddViewModel(viewModel, true); var operation = new NavigationOperation(); CallbackManager.Register(OperationType.TabNavigation, viewModel, operation.ToOperationCallback(), context); return operation; }
public INavigationOperation TryShowAsync(IViewModel viewModel, IDataContext context, IViewModelPresenter parentPresenter) { if (viewModel == this) return null; var operation = new NavigationOperation(); var callback = operation.ToOperationCallback(); //Saving callback to view model state that will allow us to execute it even after app save\restore cycle. _callbackManager.Register(NavigationType, viewModel, callback, context); OnShowViewModel(viewModel); return operation; }