public override void DeactivateItem(IStepsScreen item, bool close) { base.DeactivateItem(item, close); PreviousItems.Push(item); InvalidateProperties(); }
public void Previous() { var previous = PreviousItems.Pop(); if (previous != null) { _suppressPreviousPush = true; ActivateItem(previous); _suppressPreviousPush = false; } InvalidateProperties(); }
public override void ActivateItem(IStepsScreen item) { _activeItemObservable?.Dispose(); if (!_suppressPreviousPush) { PreviousItems.Push(ActiveItem); } base.ActivateItem(item); _activeItemObservable = item .ObservableForProperty(screen => screen.HasNext) .Subscribe(args => NotifyOfPropertyChange(nameof(CanNext))); InvalidateProperties(); }
private Func <IReference, Task> HandleExited(ITransitionItem item) { return(async(IReference _ref) => { if (Children.Any(child => child.Name == item.Name)) { return; } if (item.OnExited != null) { await item.OnExited.Invoke(_ref); } if (Mounted) { Items = Items.Where(it => it.Item1.Name != item.Name).ToList(); PreviousItems = PreviousItems.Where(it => it.Item1.Name != item.Name).ToList(); await InvokeAsync(StateHasChanged); } }); }