コード例 #1
0
ファイル: NavigationService.cs プロジェクト: johaDev/Exrin
        private void container_OnPopped(object sender, IViewNavigationArgs e)
        {
            if (e.PoppedView != null)
            {
                var model = e.PoppedView.BindingContext as IViewModel;
                if (model != null)
                {
                    model.OnPopped();
                }

                var disposableModel = e.PoppedView.BindingContext as IDisposable;
                if (disposableModel != null)
                {
                    disposableModel.Dispose();
                }
            }

            if (e.CurrentView != null)
            {
                var model = e.CurrentView.BindingContext as IViewModel;
                if (model != null)
                {
                    model.OnBackNavigated(null);
                }
            }
        }
コード例 #2
0
        private void proxy_OnPopped(object sender, IViewNavigationArgs e)
        {
            if (e.PoppedView != null)
            {
                var model = e.PoppedView.BindingContext as IViewModel;
                if (model != null)
                {
                    model.OnPopped();
                }

                var disposableModel = e.PoppedView.BindingContext as IDisposable;
                if (disposableModel != null)
                {
                    disposableModel.Dispose();
                }
            }

            if (e.CurrentView != null)
            {
                var model = e.CurrentView.BindingContext as IViewModel;
                if (model != null)
                {
                    model.OnBackNavigated(e.Parameter);
                }
            }

            // Remove CurrentView
            _viewKeyTracking.Remove(CurrentView);

            // Changes the navigation key back to the previous page
            CurrentView = _viewsByKey.First(x => x.Value.Type == e.CurrentView.GetType()).Key;
            CurrentViewTrack.RemoveAt(CurrentViewTrack.Count - 1);
        }
コード例 #3
0
        private void proxy_OnPopped(object sender, IViewNavigationArgs e)
        {
            if (e.PoppedView != null)
            {
                var model = e.PoppedView.BindingContext as IViewModel;
                if (model != null)
                {
                    model.OnPopped();
                }

                var disposableModel = e.PoppedView.BindingContext as IDisposable;
                if (disposableModel != null)
                {
                    disposableModel.Dispose();
                }
            }

            if (e.PopType == PopType.SilentPop)
            {
                return;
            }

            if (e.CurrentView != null)
            {
                var model = e.CurrentView.BindingContext as IViewModel;
                if (model != null)
                {
                    model.OnBackNavigated(e.Parameter);
                }
            }

            // Remove Last Instance of CurrentView
            for (int i = _viewKeyTracking.Count; i > 0; i--)
            {
                var tracking = _viewKeyTracking[i - 1];
                if (tracking.Key == CurrentView.Key && tracking.Platform == CurrentView.Platform)
                {
                    _viewKeyTracking.RemoveAt(i - 1);
                    break;
                }
            }


            // Changes the navigation key back to the previous page
            CurrentView = _viewsByKey.First(x => x.Value.Type == e.CurrentView.GetType()).Key;
            CurrentViewTrack.RemoveAt(CurrentViewTrack.Count - 1);
        }