private void Back()
        {
            this.KeepAlive = false;
            // find view by region
            var view = this.RegionManager.Regions["MainRegion"]
                       .ActiveViews
                       .First(x => MvvmHelpers.GetImplementerFromViewOrViewModel <ToDoDetailControlViewModel>(x) == this);

            // deactive view
            this.RegionManager.Regions["MainRegion"].Deactivate(view);

            this.RegionManager.RequestNavigate("MainRegion", nameof(ToDoListControlView));
        }
Esempio n. 2
0
 public BViewModel()
 {
     this.CloseCommand = new DelegateCommand(() =>
     {
         this.KeepAlive = false;
         // find view by region
         var view = this.RegionManager.Regions["MainRegion"]
                    .ActiveViews
                    .Where(x => MvvmHelpers.GetImplementerFromViewOrViewModel <BViewModel>(x) == this)
                    .First();
         // deactive view
         this.RegionManager.Regions["MainRegion"].Deactivate(view);
     });
 }
        private void ToDetail(TodoDetailData detailInfo)
        {
            this.KeepAlive = false;
            //TODO:情報残るようなら以下のコメントを消す
            // find view by region
            var view = RegionManager.Regions["MainRegion"]
                       .ActiveViews
                       .First(x => MvvmHelpers.GetImplementerFromViewOrViewModel <ToDoListControlViewModel>(x) == this);

            // deactive view
            this.RegionManager.Regions["MainRegion"].Deactivate(view);
            NavigationParameters param = new NavigationParameters();

            param.Add("SelectedDetailItem", detailInfo);

            this.RegionManager.RequestNavigate("MainRegion", nameof(ToDoDetailControlView), param);
        }
        private static bool ShouldKeepAlive(object inactiveView)
        {
            IRegionMemberLifetime lifetime = MvvmHelpers.GetImplementerFromViewOrViewModel <IRegionMemberLifetime>(inactiveView);

            if (lifetime != null)
            {
                return(lifetime.KeepAlive);
            }

            RegionMemberLifetimeAttribute lifetimeAttribute = GetItemOrContextLifetimeAttribute(inactiveView);

            if (lifetimeAttribute != null)
            {
                return(lifetimeAttribute.KeepAlive);
            }

            return(true);
        }
Esempio n. 5
0
 private void RequestCanNavigateFromOnCurrentlyActiveView(
     INavigationContext navigationContext,
     Action <IRegionNavigationResult> navigationCallback,
     VisualElement[] activeViews,
     int currentViewIndex)
 {
     if (currentViewIndex < activeViews.Length)
     {
         if (MvvmHelpers.GetImplementerFromViewOrViewModel <IConfirmRegionNavigationRequest>(activeViews[currentViewIndex], out var vetoingView))
         {
             // the current active view implements IConfirmNavigationRequest, request confirmation
             // providing a callback to resume the navigation request
             vetoingView.ConfirmNavigationRequest(
                 navigationContext,
                 canNavigate =>
             {
                 if (_currentNavigationContext == navigationContext && canNavigate)
                 {
                     RequestCanNavigateFromOnCurrentlyActiveViewModel(
                         navigationContext,
                         navigationCallback,
                         activeViews,
                         currentViewIndex);
                 }
                 else
                 {
                     NotifyNavigationFailed(navigationContext, navigationCallback, null);
                 }
             });
         }
         else
         {
             RequestCanNavigateFromOnCurrentlyActiveViewModel(
                 navigationContext,
                 navigationCallback,
                 activeViews,
                 currentViewIndex);
         }
     }
     else
     {
         ExecuteNavigation(navigationContext, activeViews, navigationCallback);
     }
 }