public HamburgerMenu() { DebugWrite(); if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { InitializeComponent(); } else { // hamburger menu property changes PropertyChangedHandlers.Add(nameof(IsFullScreen), e => FullScreenPropertyChanged((bool?)e.OldValue, (bool?)e.NewValue)); PropertyChangedHandlers.Add(nameof(Selected), e => SelectedPropertyChanged(e.OldValue as HamburgerButtonInfo, e.NewValue as HamburgerButtonInfo)); PropertyChangedHandlers.Add(nameof(DisplayMode), e => DisplayModePropertyChanged((SplitViewDisplayMode)e.OldValue, (SplitViewDisplayMode)e.NewValue)); PropertyChangedHandlers.Add(nameof(HamburgerButtonVisibility), e => HamburgerButtonVisibilityPropertyChanged((Visibility)e.NewValue)); PropertyChangedHandlers.Add(nameof(IsOpen), e => IsOpenPropertyChanged((bool)e.OldValue, (bool)e.NewValue)); PropertyChangedHandlers.Add(nameof(NavigationService), e => NavigationServicePropertyChanged(e.OldValue as INavigationService, e.NewValue as INavigationService)); PropertyChangedHandlers.Add(nameof(AccentColor), e => AccentColorPropertyChanged(e.OldValue as Color?, e.NewValue as Color?)); // default values; PrimaryButtons = new ObservableCollection <HamburgerButtonInfo>(); SecondaryButtons = new ObservableCollection <HamburgerButtonInfo>(); // calling this now, let's handlers wire up before styles apply InitializeComponent(); // control event handlers Loaded += HamburgerMenu_Loaded; LayoutUpdated += HamburgerMenu_LayoutUpdated; KeyboardService.Instance.AfterMenuGesture += () => IsOpen = !IsOpen; } }
public HamburgerMenu() { DebugWrite(); if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { InitializeComponent(); } else { // hamburger menu property changes PropertyChangedHandlers.Add(nameof(IsFullScreen), e => FullScreenPropertyChanged((bool?)e.OldValue, (bool?)e.NewValue)); PropertyChangedHandlers.Add(nameof(Selected), e => SelectedPropertyChanged(e.OldValue as HamburgerButtonInfo, e.NewValue as HamburgerButtonInfo)); PropertyChangedHandlers.Add(nameof(DisplayMode), e => DisplayModePropertyChanged((SplitViewDisplayMode)e.OldValue, (SplitViewDisplayMode)e.NewValue)); PropertyChangedHandlers.Add(nameof(HamburgerButtonVisibility), e => HamburgerButtonVisibilityPropertyChanged((Visibility)e.NewValue)); PropertyChangedHandlers.Add(nameof(IsOpen), e => IsOpenPropertyChanged((bool)e.OldValue, (bool)e.NewValue)); PropertyChangedHandlers.Add(nameof(NavigationService), e => NavigationServicePropertyChanged(e.OldValue as INavigationService, e.NewValue as INavigationService)); PropertyChangedHandlers.Add(nameof(AccentColor), e => AccentColorPropertyChanged(e.OldValue as Color?, e.NewValue as Color?)); PropertyChangedHandlers.Add(nameof(HeaderContent), e => HeaderContentPropertyChanged(e.OldValue, e.NewValue)); // default values; PrimaryButtons = new ObservableCollection <HamburgerButtonInfo>(); SecondaryButtons = new ObservableCollection <HamburgerButtonInfo>(); // calling this now, let's handlers wire up before styles apply InitializeComponent(); // control event handlers Loaded += HamburgerMenu_Loaded; LayoutUpdated += HamburgerMenu_LayoutUpdated; // xbox controller menu button support KeyboardService.Instance.AfterMenuGesture += () => { HamburgerCommand.Execute(); HamburgerButton.Focus(FocusState.Programmatic); }; GotFocus += (s, e) => { var element = FocusManager.GetFocusedElement() as FrameworkElement; var name = element?.Name ?? "no-name"; var content = (((element as ContentControl)?.Content as StackPanel)?.Children[0] as SymbolIcon)?.Symbol.ToString(); if (content == null) { content = (element as ContentControl)?.Content?.ToString() ?? "no-content"; } var value = $"{element?.ToString() ?? "null"} {name} {content}"; DebugWrite(value, caller: "GotFocus"); }; } }