private void SetSelected(HamburgerButtonInfo previous, HamburgerButtonInfo value) { DebugWrite($"OldValue: {previous}, NewValue: {value}"); // do not remove this if statement //// this is the fix for #410 (click twice) if (previous != null) { IsOpen = false; } // undo previous if (previous?.IsChecked ?? true && previous != value) { previous?.RaiseUnselected(); } // reset all, except selected _navButtons.Where(x => x.Value != value) .ForEach(x => { x.Value.IsChecked = false; }); // navigate only when all navigation buttons have been loaded if (_areNavButtonsLoaded && value?.PageType != null) { if (NavigationService.Navigate(value.PageType, value?.PageParameter, value?.NavigationTransitionInfo)) { IsOpen = false; if (value.ClearHistory) { NavigationService.ClearHistory(); } } else if (NavigationService.CurrentPageType == value.PageType && (NavigationService.CurrentPageParam ?? string.Empty) == (value.PageParameter ?? string.Empty)) { if (value.ClearHistory) { NavigationService.ClearHistory(); } } else { return; } } // that's it if null if (value == null) { return; } else { value.IsChecked = (value.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle); if (previous != value) { value.RaiseSelected(); } } }
async Task UpdateSelectedAsync(HamburgerButtonInfo previous, HamburgerButtonInfo value) { DebugWrite($"OldValue: {previous}, NewValue: {value}"); // pls. do not remove this if statement. this is the fix for #410 (click twice) if (previous != null) { IsOpen = (DisplayMode == SplitViewDisplayMode.CompactInline && IsOpen); } // signal previous if (previous != null && previous != value && previous.IsChecked.Value) { previous.IsChecked = false; previous.RaiseUnselected(); } // navigate only when all navigation buttons have been loaded if (AllNavButtonsAreLoaded && value?.PageType != null) { if (await NavigationService.NavigateAsync(value.PageType, value?.PageParameter, value?.NavigationTransitionInfo)) { IsOpen = (DisplayMode == SplitViewDisplayMode.CompactInline && IsOpen); if (value.ClearHistory) { NavigationService.ClearHistory(); } } else if (NavigationService.CurrentPageType == value.PageType && (NavigationService.CurrentPageParam ?? string.Empty) == (value.PageParameter ?? string.Empty)) { if (value.ClearHistory) { NavigationService.ClearHistory(); } } else if (NavigationService.CurrentPageType == value.PageType) { // just check it } else { return; } } // that's it if null if (value == null) { return; } else { value.IsChecked = (value.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle); if (previous != value) { value.RaiseSelected(); } } }
private void SignalCurrentPage(HamburgerButtonInfo previous, HamburgerButtonInfo current) { if (current == null) { return; } current.IsChecked = (current.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle); if (previous != current) { current.RaiseSelected(); } }
private void SetSelected(HamburgerButtonInfo previous, HamburgerButtonInfo value) { DebugWrite($"OldValue: {previous}, NewValue: {value}"); IsOpen = false; // reset all, except selected _navButtons .Where(x => x.Value != value) .ForEach(x => { x.Value.IsChecked = false; }); // navigate if (value?.PageType != null) { if (NavigationService.Navigate(value.PageType, value?.PageParameter, value?.NavigationTransitionInfo)) { if (value.ClearHistory) { NavigationService.ClearHistory(); } } else { return; } } // undo previous if (previous?.IsChecked ?? true && previous != value) { previous?.RaiseUnselected(); } // that's it if null if (value == null) { return; } else { value.IsChecked = (value.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle); if (previous != value) { value.RaiseSelected(); } } }
private void SetSelected(HamburgerButtonInfo previous, HamburgerButtonInfo value) { // This was added to fix an issue where the HamburgerMenu would open and close immediately // if the Hamburger button was clicked after starting the app in the narrowest VisualState. if (_navButtonsLoaded) { IsOpen = false; } // undo previous if (previous != null && previous != value) { previous.RaiseUnselected(); } // reset all var values = _navButtons.Select(x => x.Value); foreach (var item in values.Where(x => x != value)) { item.IsChecked = false; } // that's it if null if (value == null) { return; } else { value.IsChecked = (value.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle); if (previous != value) { value.RaiseSelected(); } } // navigate only to new pages if (value.PageType == null) { return; } if (value.PageType.Equals(NavigationService.CurrentPageType) && (value.PageParameter?.Equals(NavigationService.CurrentPageParam) ?? false)) { return; } NavigationService.Navigate(value.PageType, value.PageParameter); }
private void SetSelected(HamburgerButtonInfo previous, HamburgerButtonInfo value) { if (previous != null) { IsOpen = false; } // undo previous if (previous != null && previous != value) { previous.RaiseUnselected(); } // reset all var values = _navButtons.Select(x => x.Value); foreach (var item in values.Where(x => x != value)) { item.IsChecked = false; } // that's it if null if (value == null) { return; } else { value.IsChecked = (value.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle); if (previous != value) { value.RaiseSelected(); } } // navigate only to new pages if (value.PageType == null) { return; } if (value.PageType.Equals(NavigationService.CurrentPageType) && (value.PageParameter?.Equals(NavigationService.CurrentPageParam) ?? false)) { return; } NavigationService.Navigate(value.PageType, value.PageParameter); }
private void SetSelected(HamburgerButtonInfo previous, HamburgerButtonInfo value) { DebugWrite($"OldValue: {previous}, NewValue: {value}"); // do not remove this if statement //// this is the fix for #410 (click twice) if (previous != null) IsOpen = (DisplayMode == SplitViewDisplayMode.CompactInline && IsOpen); // undo previous if (previous?.IsChecked ?? true && previous != value) { previous?.RaiseUnselected(); } // reset all, except selected _navButtons.Where(x => x.Value != value) .ForEach(x => { x.Value.IsChecked = false; }); // navigate only when all navigation buttons have been loaded if (_areNavButtonsLoaded && value?.PageType != null) { if (NavigationService.Navigate(value.PageType, value?.PageParameter, value?.NavigationTransitionInfo)) { IsOpen = (DisplayMode == SplitViewDisplayMode.CompactInline && IsOpen); if (value.ClearHistory) NavigationService.ClearHistory(); } else if (NavigationService.CurrentPageType == value.PageType && (NavigationService.CurrentPageParam ?? string.Empty) == (value.PageParameter ?? string.Empty)) { if (value.ClearHistory) NavigationService.ClearHistory(); } else if (NavigationService.CurrentPageType == value.PageType) { // just check it } else { return; } } // that's it if null if (value == null) { return; } else { value.IsChecked = (value.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle); if (previous != value) { value.RaiseSelected(); } } }
private async Task UpdateSelectedAsync(HamburgerButtonInfo previous, HamburgerButtonInfo value) { DebugWrite($"OldValue: {previous}, NewValue: {value}"); // pls. do not remove this if statement. this is the fix for #410 (click twice) if (previous != null) { IsOpen = (DisplayMode == SplitViewDisplayMode.CompactInline && IsOpen); } // signal previous if (previous != null && previous != value && previous.IsChecked.Value) { previous.IsChecked = false; previous.RaiseUnselected(); // Workaround for visual state of ToggleButton not reset correctly if (value != null) { var control = LoadedNavButtons.First(x => x.HamburgerButtonInfo == value).GetElement <Control>(); VisualStateManager.GoToState(control, "Normal", true); } } // navigate only when all navigation buttons have been loaded if (AllNavButtonsAreLoaded && value?.PageType != null) { if (await NavigationService.NavigateAsync(value.PageType, value?.PageParameter, value?.NavigationTransitionInfo)) { IsOpen = (DisplayMode == SplitViewDisplayMode.CompactInline && IsOpen); if (value.ClearHistory) { NavigationService.ClearHistory(); } if (value.ClearCache) { NavigationService.ClearCache(true); } } else if (NavigationService.CurrentPageType == value.PageType && (NavigationService.CurrentPageParam ?? string.Empty) == (value.PageParameter ?? string.Empty)) { if (value.ClearHistory) { NavigationService.ClearHistory(); } if (value.ClearCache) { NavigationService.ClearCache(true); } } else if (NavigationService.CurrentPageType == value.PageType) { // just check it } else { return; } } // that's it if null if (value == null) { return; } else { value.IsChecked = (value.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle); if (previous != value) { value.RaiseSelected(); } } }
private void SetSelected(HamburgerButtonInfo previous, HamburgerButtonInfo value) { IsOpen = false; // undo previous if (previous != null && previous != value) { previous.RaiseUnselected(); } // reset all var values = _navButtons.Select(x => x.Value); foreach (var item in values.Where(x => x != value)) { item.IsChecked = false; } // that's it if null if (value == null) { return; } else { value.IsChecked = true; if (previous != value) { value.RaiseSelected(); } } // navigate only to new pages if (value.PageType == null) return; if (value.PageType.Equals(NavigationService.CurrentPageType) && (value.PageParameter?.Equals(NavigationService.CurrentPageParam) ?? false)) return; NavigationService.Navigate(value.PageType, value.PageParameter); }
private void SetSelected(HamburgerButtonInfo previous, HamburgerButtonInfo value) { DebugWrite($"OldValue: {previous}, NewValue: {value}"); IsOpen = false; // reset all, except selected _navButtons .Where(x => x.Value != value) .ForEach(x => { x.Value.IsChecked = false; }); // navigate if (value?.PageType != null) { if (NavigationService.Navigate(value.PageType, value?.PageParameter, value?.NavigationTransitionInfo)) { if (value.ClearHistory) NavigationService.ClearHistory(); } else { return; } } // undo previous if (previous?.IsChecked ?? true && previous != value) { previous?.RaiseUnselected(); } // that's it if null if (value == null) { return; } else { value.IsChecked = (value.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle); if (previous != value) { value.RaiseSelected(); } } }
async Task UpdateSelectedAsync(HamburgerButtonInfo previous, HamburgerButtonInfo value) { DebugWrite($"OldValue: {previous}, NewValue: {value}"); // pls. do not remove this if statement. this is the fix for #410 (click twice) if (previous != null) { IsOpen = (DisplayMode == SplitViewDisplayMode.CompactInline && IsOpen); } // signal previous if (previous != null && previous != value && previous.IsChecked.Value) { previous.IsChecked = false; previous.RaiseUnselected(); // Workaround for visual state of ToggleButton not reset correctly var fwe = LoadedNavButtons.Where(x => x.HamburgerButtonInfo == previous) .Select(x => x.FrameworkElement) .FirstOrDefault() as Control; if (fwe != null) { VisualStateManager.GoToState(fwe, "Normal", true); } } // navigate only when all navigation buttons have been loaded if (AllNavButtonsAreLoaded && value?.PageType != null) { if (await NavigationService.NavigateAsync(value.PageType, value?.PageParameter, value?.NavigationTransitionInfo)) { IsOpen = (DisplayMode == SplitViewDisplayMode.CompactInline && IsOpen); if (value.ClearHistory) NavigationService.ClearHistory(); } else if (NavigationService.CurrentPageType == value.PageType && (NavigationService.CurrentPageParam ?? string.Empty) == (value.PageParameter ?? string.Empty)) { if (value.ClearHistory) NavigationService.ClearHistory(); } else if (NavigationService.CurrentPageType == value.PageType) { // just check it } else { return; } } // that's it if null if (value == null) { return; } else { value.IsChecked = (value.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle); if (previous != value) { value.RaiseSelected(); } } }