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; } }