/// <summary>
 /// A user control that hosts the status panel in the main pivot/tab.
 /// </summary>
 public StatusPanel()
 {
     this.InitializeComponent();
     statusVM = ViewModelDispatcher.StatusViewModel;
 }
        /// <summary>
        /// Lazy loading of pivot tabs for perf.
        /// only load a tab when a user access it
        /// Naturally all pivots are loaded when the control is created (we dont want this)
        /// </summary>
        private void UpdateTabInfoOnPivotLoading(Pivot sender, PivotItemEventArgs args)
        {
            int currentTabIndex = PhoneTabs.SelectedIndex;
            //Set device oritentation based on tab
            switch (currentTabIndex)
            {
                //For the contact and dialer tabs, we should disable landscape
                case 1:
                case 2:
                    DisplayInformation.AutoRotationPreferences = DisplayOrientations.Portrait;
                    break;
                //Other tabs can be both portrait and landscape
                default:
                    DisplayInformation.AutoRotationPreferences =
                        DisplayOrientations.Portrait | DisplayOrientations.Landscape |
                        DisplayOrientations.PortraitFlipped | DisplayOrientations.LandscapeFlipped;
                    break;
            }

            //Update content as its already loaded
            if (args.Item.Content != null)
            {
                //Content loaded already, perform an update instead and exit
                UpdateTabInfo(currentTabIndex);
                return;
            }

            //Lazy load the tabs. Only load when accessed
            UserControl CurrentPanel;
            switch (currentTabIndex)
            {
                case 0:
                    statusVM = ViewModelDispatcher.StatusViewModel;
                    CurrentPanel = new StatusPanel();
                    CurrentPanel.Height = Double.NaN; //Auto height
                    args.Item.Content = CurrentPanel;
                    break;
                case 1:
                    CurrentPanel = new ContactsPanel();
                    CurrentPanel.Height = Double.NaN; //Auto height
                    args.Item.Content = CurrentPanel;
                    break;
                case 2:
                    CurrentPanel = new DialerPanel();
                    CurrentPanel.Height = Double.NaN; //Auto height
                    args.Item.Content = CurrentPanel;
                    break;
                case 3:
                    voicemailVM = ViewModelDispatcher.VoicemailViewModel;
                    CurrentPanel = new VoicemailPanel();
                    CurrentPanel.Height = Double.NaN; //Auto height
                    args.Item.Content = CurrentPanel;
                    break;
                default:
                    break;
            }
        }