private void HandleFrameNavigated(object sender, NavigationEventArgs e) { if (e.Content == _frameContentWhenOpened) { // Navigation to original page; close the picker page ListPickerMode = ListPickerMode.Normal; } else if (null == _listPickerPage && _hasPickerPageOpen) { _hasPickerPageOpen = false; _listPickerPage = e.Content as ListPickerPage; if (null != _listPickerPage) { // Set up the list picker page with the necesarry fields. if (null != FullModeHeader) { _listPickerPage.HeaderText = (string)FullModeHeader; } else { _listPickerPage.HeaderText = (string) Header; } _listPickerPage.FullModeItemTemplate = FullModeItemTemplate; _listPickerPage.Items.Clear(); if (null != Items) { foreach (var element in Items) { _listPickerPage.Items.Add(element); } } _listPickerPage.SelectionMode = SelectionMode; if (SelectionMode == SelectionMode.Single) { _listPickerPage.SelectedItem = SelectedItem; } else { _listPickerPage.SelectedItems.Clear(); if (null != SelectedItems) { foreach (var element in SelectedItems) { _listPickerPage.SelectedItems.Add(element); } } } } } }
private void ClosePickerPage() { // Unhook from events if (null != _frame) { _frame.Navigated -= new NavigatedEventHandler(HandleFrameNavigated); _frame.NavigationStopped -= new NavigationStoppedEventHandler(HandleFrameNavigationStoppedOrFailed); _frame.NavigationFailed -= new NavigationFailedEventHandler(HandleFrameNavigationStoppedOrFailed); // Restore host page transitions for the completed "popup" navigation UIElement frameContentWhenOpenedAsUIElement = _frameContentWhenOpened as UIElement; if (null != frameContentWhenOpenedAsUIElement) { TransitionService.SetNavigationInTransition(frameContentWhenOpenedAsUIElement, _savedNavigationInTransition); _savedNavigationInTransition = null; TransitionService.SetNavigationOutTransition(frameContentWhenOpenedAsUIElement, _savedNavigationOutTransition); _savedNavigationOutTransition = null; } _frame = null; _frameContentWhenOpened = null; } // Commit the value if available if (null != _listPickerPage) { if (SelectionMode == SelectionMode.Single && null != _listPickerPage.SelectedItem) { SelectedItem = _listPickerPage.SelectedItem; } else if ((SelectionMode == SelectionMode.Multiple || SelectionMode == SelectionMode.Extended) && null != _listPickerPage.SelectedItems) { SelectedItems = _listPickerPage.SelectedItems; } _listPickerPage = null; } }