public NavigationProvider([NotNull] INavigationService navigationService, [NotNull] IThreadManager threadManager, [NotNull] IViewMappingProvider mappingProvider, [NotNull] IViewManager viewManager,
                                  [NotNull] IViewModelProvider viewModelProvider, [NotNull] INavigationDispatcher navigationDispatcher, IEventAggregator eventAggregator)
        {
            Should.NotBeNull(navigationService, nameof(navigationService));
            Should.NotBeNull(threadManager, nameof(threadManager));
            Should.NotBeNull(mappingProvider, nameof(mappingProvider));
            Should.NotBeNull(viewManager, nameof(viewManager));
            Should.NotBeNull(viewModelProvider, nameof(viewModelProvider));
            Should.NotBeNull(navigationDispatcher, nameof(navigationDispatcher));
            Should.NotBeNull(eventAggregator, nameof(eventAggregator));
            NavigationService    = navigationService;
            ThreadManager        = threadManager;
            ViewMappingProvider  = mappingProvider;
            ViewManager          = viewManager;
            ViewModelProvider    = viewModelProvider;
            NavigationDispatcher = navigationDispatcher;
            _vmReference         = Empty.WeakReference;

            NavigationService.Navigating += NavigationServiceOnNavigating;
            NavigationService.Navigated  += NavigationServiceOnNavigated;
            eventAggregator.Subscribe(this);
#if WINDOWS_UWP
            _openedViewModels = new Dictionary <Guid, IViewModel>();
#endif
        }
 public SplitViewViewModelPresenter(IViewModelProvider viewModelProvider, INavigationDispatcher navigationDispatcher, IOperationCallbackManager callbackManager)
 {
     _viewModelProvider           = viewModelProvider;
     _navigationDispatcher        = navigationDispatcher;
     _callbackManager             = callbackManager;
     viewModelProvider.Preserved += OnViewModelPreserved;
     viewModelProvider.Restored  += OnViewModelRestored;
 }
 public RestorableViewModelPresenter(INavigationDispatcher navigationDispatcher, IViewModelProvider viewModelProvider, ISerializer serializer)
     : base(navigationDispatcher)
 {
     Should.NotBeNull(viewModelProvider, nameof(viewModelProvider));
     _viewModelProvider = viewModelProvider;
     _serializer        = serializer;
     _openedViewModels  = new List <IViewModel>();
     GetStateDictionary = () => Application.Current.Properties;
 }
 public OpenedViewModelsViewModel(INavigationDispatcher navigationDispatcher, IToastPresenter toastPresenter)
 {
     _navigationDispatcher            = navigationDispatcher;
     _toastPresenter                  = toastPresenter;
     TryCloseCommand                  = new AsyncRelayCommand <OpenedViewModelInfo>(TryCloseAsync);
     TryImmediateCloseCommand         = new AsyncRelayCommand <OpenedViewModelInfo>(TryImmediateCloseAsync);
     TryOpenCommand                   = new AsyncRelayCommand <OpenedViewModelInfo>(TryOpenAsync);
     TryOpenClearBackStackCommand     = new AsyncRelayCommand <OpenedViewModelInfo>(TryOpenClearBackStackAsync);
     _navigationDispatcher.Navigated += NavigationDispatcherOnNavigated;
 }
예제 #5
0
 public ModalViewMediator([NotNull] IThreadManager threadManager,
                          [NotNull] IViewManager viewManager, [NotNull] IWrapperManager wrapperManager, [NotNull] IViewMappingProvider viewMappingProvider,
                          [NotNull] IViewModelProvider viewModelProvider, [NotNull] INavigationDispatcher navigationDispatcher, [NotNull] IEventAggregator eventAggregator)
     : base(threadManager, viewManager, wrapperManager, navigationDispatcher, eventAggregator)
 {
     Should.NotBeNull(viewMappingProvider, nameof(viewMappingProvider));
     Should.NotBeNull(viewModelProvider, nameof(viewModelProvider));
     _viewMappingProvider = viewMappingProvider;
     _viewModelProvider   = viewModelProvider;
     UseAnimations        = true;
 }
 public ModalViewMediator([NotNull] IThreadManager threadManager, [NotNull] IViewManager viewManager, [NotNull] IWrapperManager wrapperManager,
                          [NotNull] INavigationDispatcher navigationDispatcher, [NotNull] IEventAggregator eventAggregator)
     : base(threadManager, viewManager, wrapperManager, navigationDispatcher, eventAggregator)
 {
     _backButtonHandler = ReflectionExtensions
                          .CreateWeakDelegate <ModalViewMediator, CancelEventArgs, EventHandler <Page, CancelEventArgs> >(this,
                                                                                                                          (service, o, arg3) => service.OnBackButtonPressed((Page)o, arg3),
                                                                                                                          (o, handler) => XamarinFormsToolkitExtensions.BackButtonPressed -= handler, handler => handler.Handle);
     _closedHandler = ReflectionExtensions
                      .CreateWeakDelegate <ModalViewMediator, ModalPoppedEventArgs, EventHandler <ModalPoppedEventArgs> >(this,
                                                                                                                          (mediator, o, arg3) => mediator.OnModalClosed(arg3), (o, handler) => Application.Current.ModalPopped -= handler, handler => handler.Handle);
     UseAnimations = true;
 }
예제 #7
0
 public XamarinFormsRootDynamicViewModelPresenter(IViewManager viewManager, INavigationDispatcher navigationDispatcher,
                                                  IViewMappingProvider viewMappingProvider, IThreadManager threadManager, IEventAggregator eventAggregator)
 {
     Should.NotBeNull(viewManager, nameof(viewManager));
     Should.NotBeNull(navigationDispatcher, nameof(navigationDispatcher));
     Should.NotBeNull(viewMappingProvider, nameof(viewMappingProvider));
     Should.NotBeNull(threadManager, nameof(threadManager));
     Should.NotBeNull(eventAggregator, nameof(eventAggregator));
     ViewManager          = viewManager;
     NavigationDispatcher = navigationDispatcher;
     ViewMappingProvider  = viewMappingProvider;
     ThreadManager        = threadManager;
     eventAggregator.Subscribe(this);
 }
 protected WindowViewMediatorBase([NotNull] IThreadManager threadManager, [NotNull] IViewManager viewManager, [NotNull] IWrapperManager wrapperManager, [NotNull] INavigationDispatcher navigationDispatcher,
                                  [NotNull] IEventAggregator eventAggregator)
 {
     Should.NotBeNull(threadManager, nameof(threadManager));
     Should.NotBeNull(viewManager, nameof(viewManager));
     Should.NotBeNull(wrapperManager, nameof(wrapperManager));
     Should.NotBeNull(navigationDispatcher, nameof(navigationDispatcher));
     Should.NotBeNull(eventAggregator, nameof(eventAggregator));
     _threadManager        = threadManager;
     _viewManager          = viewManager;
     _wrapperManager       = wrapperManager;
     _navigationDispatcher = navigationDispatcher;
     _eventAggregator      = eventAggregator;
     _eventAggregator.Subscribe(this);
 }
예제 #9
0
        private Task <bool> CloseViewModel(INavigationDispatcher navigationDispatcher, IViewModel viewModel, IDataContext ctx)
        {
            if (!(viewModel is TViewModel))
            {
                return(Empty.FalseTask);
            }
            var removeCtx = new NavigationContext(NavigationType.Tab, NavigationMode.Remove, viewModel, null, this, ctx);

            return(NavigationDispatcher
                   .OnNavigatingAsync(removeCtx)
                   .TryExecuteSynchronously(task =>
            {
                if (task.Result)
                {
                    _lastRemoveContext = removeCtx;
                    return ItemsSource.Remove((TViewModel)viewModel);
                }
                return false;
            }));
        }
예제 #10
0
 public ViewModelPresenter(INavigationDispatcher navigationDispatcher)
 {
     Should.NotBeNull(navigationDispatcher, nameof(navigationDispatcher));
     _navigationDispatcher = navigationDispatcher;
     _dynamicPresenters    = new DynamicPresentersCollection(this);
 }
예제 #11
0
 public WindowViewMediator([NotNull] IThreadManager threadManager, [NotNull] IViewManager viewManager,
                           [NotNull] IWrapperManager wrapperManager, [NotNull] INavigationDispatcher navigationDispatcher, [NotNull] IEventAggregator eventAggregator)
     : base(threadManager, viewManager, wrapperManager, navigationDispatcher, eventAggregator)
 {
 }
예제 #12
0
 protected abstract WindowViewMediatorBase <TView> Create(IViewModel viewModel, IThreadManager threadManager, IViewManager viewManager,
                                                          IWrapperManager wrapperManager, IOperationCallbackManager callbackManager, INavigationDispatcher navigationDispatcher);
        protected override WindowViewMediatorBase <IWindowView> Create(IViewModel viewModel, IThreadManager threadManager, IViewManager viewManager,
                                                                       IWrapperManager wrapperManager, IOperationCallbackManager callbackManager, INavigationDispatcher navigationDispatcher)
        {
            var mediator = new WindowViewMediator(threadManager, viewManager, wrapperManager, navigationDispatcher, new EventAggregator());

            mediator.Initialize(viewModel, null);
            return(mediator);
        }
 private void NavigationDispatcherOnNavigated(INavigationDispatcher sender, NavigatedEventArgs args)
 {
     RefreshOpenedViewModels();
 }