private void HandleFrameNavigated(object sender, NavigationEventArgs e) { if (e.Content == _frameContentWhenOpened) { // Navigation to original page; close the picker page Close(); } else if (e.Content is ContactChooserPage) { _chooserPage = e.Content as ContactChooserPage; _chooserPage.OnSelected += OnSelected; _chooserPage.LoadContacts(); } }
private void Close() { // Unhook from events if (_frame != null) { _frame.Navigated -= HandleFrameNavigated; _frame.NavigationStopped -= HandleFrameNavigationStoppedOrFailed; _frame.NavigationFailed -= HandleFrameNavigationStoppedOrFailed; // Restore host page transitions for the completed "popup" navigation var frameContentWhenOpenedAsUiElement = _frameContentWhenOpened as UIElement; if (null != frameContentWhenOpenedAsUiElement) { TransitionService.SetNavigationInTransition(frameContentWhenOpenedAsUiElement, _savedNavigationInTransition); _savedNavigationInTransition = null; TransitionService.SetNavigationOutTransition(frameContentWhenOpenedAsUiElement, _savedNavigationOutTransition); _savedNavigationOutTransition = null; } _frame = null; _frameContentWhenOpened = null; _chooserPage = null; } }