Displays the list of items and allows single or multiple selection.
Inheritance: PhoneApplicationPage
        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;
            }
        }