Beispiel #1
0
        private void OnFlyoutClosed(FlyoutControl flyoutControl)
        {
            this.FlyoutClosing.Raise(EventArgs.Empty);

            if (this.flyouts.Count > 0 && this.flyouts.Peek() == flyoutControl)
            {
                this.flyouts.Pop();
                while (this.flyouts.Count > 0)
                {
                    FlyoutControl childControl = this.flyouts.Pop();
                    childControl.Close();
                }
            }
        }
Beispiel #2
0
        public void GoBack()
        {
            if (this.flyouts.Count == 0)
            {
                // no flyout => normal go back
                if (this.mainFrame.CanGoBack)
                {
                    if (this.mainFrame.Content is FrameworkElement)
                    {
                        var datacontext = ((FrameworkElement)this.mainFrame.Content).DataContext as IDisposable;
                        if (datacontext != null)
                        {
                            datacontext.Dispose();
                        }
                    }

                    this.mainFrame.GoBack();
                }
                else
                {
                    // platform service can be null if we instantiante the navigation service manually
                    // during startup to report a crash
                    if (this.platformService != null)
                    {
                        this.platformService.ExitAppAsync();
                    }
                }
            }
            else
            {
                FlyoutControl flyoutControl = this.flyouts.Pop();
                if (flyoutControl.DataContext is IDisposable)
                {
                    ((IDisposable)flyoutControl.DataContext).Dispose();
                }
                flyoutControl.Close();
            }
        }