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)); }
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); }
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); } }