/// <summary>
        /// Pushes the <see cref="IModalViewModel" /> onto the stack.
        /// </summary>
        /// <param name="modal">The modal.</param>
        /// <param name="contract">The contract.</param>
        /// <returns></returns>
        public IObservable <Unit> PushModal(IModalViewModel modal, string contract = null)
        {
            if (modal == null)
            {
                throw new ArgumentNullException(nameof(modal));
            }

            return(_view.PushModal(modal, contract).Do(_ => AddToStackAndTick(_modalStack, modal, false)));
        }
Exemple #2
0
        void IModalDisplay.Show <TResult>(
            IModalViewModel <TResult> viewModel,
            Action <TResult> onClosed,
            int fadeDuration)
        {
            viewModel.Require(nameof(viewModel));

            MainWindowViewModel.Instance.SetModalViewModel(viewModel, fadeDuration);

            viewModel.OnClosed += onClosed;
        }
        public IObservable<Unit> PushModal(IModalViewModel modal, 
            string contract = null,
             bool animate = true)
        {
            Ensure.ArgumentNotNull(modal, nameof(modal));

            return this
                ._view
                .PushModal(modal, contract, animate)
                .Do(
                    _ =>
                    {
                        AddToStackAndTick(this._modalStack, modal, false);
                        _logger.Debug("Added modal '{0}' (contract '{1}') to stack.", modal.Title, contract);
                    });
        }
Exemple #4
0
        /// <summary>
        /// Pushes the modal.
        /// </summary>
        /// <param name="modalViewModel">The modal view model.</param>
        /// <param name="contract">The contract.</param>
        /// <returns></returns>
        public IObservable <Unit> PushModal(IModalViewModel modalViewModel, string contract)
        {
            // Ensure.ArgumentNotNull(modalViewModel, nameof(modalViewModel));

            return(Observable
                   .Start(
                       () =>
            {
                var page = this.LocatePageFor(modalViewModel, contract);
                this.SetPageTitle(page, modalViewModel.Id);
                return page;
            },
                       this.backgroundScheduler)
                   .ObserveOn(this.mainScheduler)
                   .SelectMany(
                       page =>
                       this
                       .Navigation
                       .PushModalAsync(page)
                       .ToObservable()));
        }
 private void SetupModalViewModel(IModalViewModel modalViewModel)
 {
     ModalViewModel = modalViewModel;
     ShowModal      = modalViewModel != null;
 }
Exemple #6
0
 async Task IViewModelNavigation.PushModalAsync(IModalViewModel viewModel)
 {
     await MainPage.Navigation.PushModalAsync(ResolvePage(FindViewForViewModel(viewModel)));
 }
 // For generic modal
 public void OpenModal(IModalViewModel viewModel)
 {
     CurrentModal = viewModel;
     IsModalOpen = true;
 }