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