Наследование: System.Windows.Controls.UserControl
        // Constructor
        public MainPage()
        {
            InitializeComponent();

            splashScreenPopup = new Popup();
            splashScreenPopup.Child = new PopupSplashScreen();
            splashScreenPopup.IsOpen = true;

            //Set the MainPage.Loaded handler
            this.Loaded += new RoutedEventHandler(MainPage_Loaded);

            //Checking loading data from database
            if (!App.ViewModel.IsDataLoaded)
            {
                //If data is not loaded from database than - Load
                App.ViewModel.LoadData();
            }
            // Set the data context of the listbox control to the sample data
            DataContext = App.ViewModel;

            //If there is an empty database (first start of application?)?
            if (App.ViewModel.ShoppingLists.Count == 0)
                //Than add new empty list with "my new list" name
                App.ViewModel.AddNewList(new ShoppingList() { ListName = "my new list" });

            //Choosing what layout to display on the MainPage of application - Pivot or Filtered list.
            //For Pivot layout using CustomPivotControl, for Filtered list - CustomFilteredListControl.
            //All this controls have specific layout to display Lists and list items in corresponding way
            //
            //With the start of application 'LaytouRoot' grid has one child
            // - it's a grid, that contain 'Add' button and TaxtBox to input new item's name.
            //Thus, for display the shopping lists from database it's necessary to add the control
            //with corresponding layout.
            if ((bool)App.Settings.FiltersSettings)
            {
                //Using Pivot layout for the MainPage
                Control elem = new CustomFilterListControl();
                LayoutRoot.Children.Insert(0, elem);
            }
            else
            {
                //Using Filtered list layout
                Control elem = new CustomPivotControl();
                LayoutRoot.Children.Insert(0, elem);
            }
        }
        //This function handles MainPage.Loaded event.
        //This event fires, when navigate to MainPage with NavigationService.GoBake()
        //or NavigationService.Navigate(). Such navigation appear when the user navigates
        //from EditItemPage, SettingsPage, SkyDrive etc.
        //The most important navigation is - MainPage <- SettingsPage, because there user select
        //Pivot display mode or Filter list mode.
        //In this case it's necessary to update layout if it is not valid.
        private void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            //To choose what layout to display (Pivot control or Filtered list)
            //at first check application settings and check current layout.
            //If current layout is invalid - change layout with deleting old
            //displaying control and inserting new control for corresponding settings.
            if (LayoutRoot.Children.Count == 1)
            {
                if ((bool)App.Settings.FiltersSettings)
                {
                    //Using Pivot layout for the MainPage
                    Control elem = new CustomFilterListControl();
                    LayoutRoot.Children.Insert(0, elem);
                }
                else
                {
                    //Using Filtered list layout
                    Control elem = new CustomPivotControl();
                    LayoutRoot.Children.Insert(0, elem);
                }
            }
            else if (LayoutRoot.Children.Count == 2)
            {
                Control currentControl = LayoutRoot.Children[0] as Control;
                Type type = currentControl.GetType();

                //Displaying Pivot control
                if ((bool)App.Settings.FiltersSettings && type == typeof(CustomPivotControl))
                {
                    LayoutRoot.Children.RemoveAt(0);
                    Control newControl = new CustomFilterListControl();
                    LayoutRoot.Children.Insert(0, newControl);
                }
                //Displaying Filtered list
                else if (!(bool)App.Settings.FiltersSettings && type == typeof(CustomFilterListControl))
                {
                    LayoutRoot.Children.RemoveAt(0);
                    Control newControl = new CustomPivotControl();
                    LayoutRoot.Children.Insert(0, newControl);
                }
                else
                {
                    //Nothing to do, because MainPage layout is valid
                }
            }
            //If 'LayoutRoot' grid contain more than 2 children, than we have an exception
            //with current layout
            else
            {
                throw new Exception("There is an exception in the page's layout");
            }

            //Close splash screen
            splashScreenPopup.IsOpen = false;
            PopupSplashScreen screen = splashScreenPopup.Child as PopupSplashScreen;
            screen.loadingProgress.IsIndeterminate = false;
        }