private void SetSelectedButton(AppMenuButton previous, AppMenuButton value)
        {
            if (previous != null)
            {
                this.IsOpen = this.DisplayMode == SplitViewDisplayMode.CompactInline && this.IsOpen;
            }

            if (previous?.IsChecked ?? previous != value)
            {
                previous?.RaiseUnselected();
            }

            this.navButtons.Where(x => x.Value != value).ForEach(x => { x.Value.IsChecked = false; });

            if (this.areAppMenuButtonsLoaded && value?.Page != null)
            {
                if (this.NavigationService.CurrentPageType == value.Page)
                {
                    // Want to make sure the item is selected
                    value.IsChecked = value.ButtonType == AppMenuButtonType.Toggle;
                    return;
                }

                var navigated = this.NavigationService.Navigate(value.Page, value.PageParameter);
                if (!navigated)
                {
                    this.SelectedButton = previous;
                    return;
                }

                this.IsOpen = this.DisplayMode == SplitViewDisplayMode.CompactInline && this.IsOpen;
                if (value.ClearNavigationStack)
                {
                    this.NavigationService.ClearNavigationHistory();
                }
            }

            if (value != null)
            {
                value.IsChecked = (value.ButtonType == AppMenuButtonType.Toggle);
                if (previous != value)
                {
                    value.RaiseSelected();
                }
            }
        }
        private void ExecutePageNavigation(AppMenuButton menuButton)
        {
            if (menuButton == null)
            {
                throw new NullReferenceException("CommandParameter is not set");
            }

            if (menuButton.ButtonType == AppMenuButtonType.Command)
            {
                menuButton.Command?.Execute(menuButton.CommandParameter);
                return;
            }

            if (menuButton.Page != null)
            {
                this.SelectedButton = menuButton;
            }
        }