示例#1
0
        public override void DeactivateItem(IStepsScreen item, bool close)
        {
            base.DeactivateItem(item, close);

            PreviousItems.Push(item);

            InvalidateProperties();
        }
示例#2
0
        public void Previous()
        {
            var previous = PreviousItems.Pop();

            if (previous != null)
            {
                _suppressPreviousPush = true;
                ActivateItem(previous);
                _suppressPreviousPush = false;
            }

            InvalidateProperties();
        }
示例#3
0
        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);
                }
            });
        }