public HamburgerMenu() { this.InitializeComponent(); if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { return; } new KeyboardService().AfterWindowZGesture = () => { HamburgerCommand.Execute(null); }; }
public HamburgerMenu() { InitializeComponent(); if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { // nothing } else { PrimaryButtons = new ObservableItemCollection <HamburgerButtonInfo>(); SecondaryButtons = new ObservableItemCollection <HamburgerButtonInfo>(); KeyboardService.Instance.AfterWindowZGesture = () => { HamburgerCommand.Execute(null); }; ShellSplitView.RegisterPropertyChangedCallback(SplitView.IsPaneOpenProperty, (d, e) => { // secondary layout if (SecondaryButtonOrientation.Equals(Orientation.Horizontal) && ShellSplitView.IsPaneOpen) { _SecondaryButtonStackPanel.Orientation = Orientation.Horizontal; } else { _SecondaryButtonStackPanel.Orientation = Orientation.Vertical; } // overall events if ((d as SplitView).IsPaneOpen) { PaneOpened?.Invoke(ShellSplitView, EventArgs.Empty); PaneOpen?.Invoke(ShellSplitView, EventArgs.Empty); } else { PaneClosed?.Invoke(ShellSplitView, EventArgs.Empty); } }); ShellSplitView.RegisterPropertyChangedCallback(SplitView.DisplayModeProperty, (d, e) => { DisplayMode = ShellSplitView.DisplayMode; }); Loaded += (s, e) => { var any = GetType().GetRuntimeProperties() .Where(x => x.PropertyType == typeof(SolidColorBrush)) .Any(x => x.GetValue(this) != null); if (!any) { // this is the default color if the user supplies none AccentColor = Colors.DarkOrange; } }; } }
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"); }; } }
public HamburgerMenu() { this.InitializeComponent(); if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { // nothing } else { PrimaryButtons = new ObservableCollection <NavigationButtonInfo>(); SecondaryButtons = new ObservableCollection <NavigationButtonInfo>(); new KeyboardService().AfterWindowZGesture = () => { HamburgerCommand.Execute(null); }; } }
public HamburgerMenu() { DebugWrite(); if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { InitializeComponent(); } else { // 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 stackpanel = (element as ContentControl)?.Content as StackPanel; var symbolicon = stackpanel?.Children[0] as SymbolIcon; var symbol = symbolicon?.Symbol.ToString(); symbol = symbol ?? (element as ContentControl)?.Content?.ToString() ?? "no-content"; var value = $"{element?.ToString() ?? "null"} name:{name} symbol:{symbol}"; DebugWrite(value, caller: "GotFocus"); }; } }
private void PaneContent_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e) { if (DisplayMode == SplitViewDisplayMode.CompactInline || DisplayMode == SplitViewDisplayMode.Inline) { return; } var button = new InfoElement(e.OriginalSource); if (button.HamburgerButtonInfo?.IsChecked ?? false) { return; } switch (OpenCloseMode) { case OpenCloseModes.Auto: case OpenCloseModes.Tap: HamburgerCommand.Execute(null); break; } }
public HamburgerMenu() { this.InitializeComponent(); if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { // nothing } else { PrimaryButtons = new ObservableItemCollection <HamburgerButtonInfo>(); SecondaryButtons = new ObservableItemCollection <HamburgerButtonInfo>(); new KeyboardService().AfterWindowZGesture = () => { HamburgerCommand.Execute(null); }; ShellSplitView.RegisterPropertyChangedCallback(SplitView.IsPaneOpenProperty, (d, e) => { if (SecondaryButtonOrientation.Equals(Orientation.Horizontal) && ShellSplitView.IsPaneOpen) { _SecondaryButtonStackPanel.Orientation = Orientation.Horizontal; } else { _SecondaryButtonStackPanel.Orientation = Orientation.Vertical; } }); ShellSplitView.RegisterPropertyChangedCallback(SplitView.DisplayModeProperty, (d, e) => { DisplayMode = ShellSplitView.DisplayMode; }); Loaded += (s, e) => { var any = this.GetType().GetRuntimeProperties() .Where(x => x.PropertyType == typeof(SolidColorBrush)) .Any(x => x.GetValue(this) != null); if (!any) { AccentColor = Colors.DarkGreen; } }; } }
private void PaneContent_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e) { DebugWrite($"OpenCloseMode {OpenCloseMode}"); if (OpenCloseMode.HasFlag(OpenCloseModes.None)) { return; } else if (OpenCloseMode.HasFlag(OpenCloseModes.Auto)) { switch (e.PointerDeviceType) { case Windows.Devices.Input.PointerDeviceType.Touch: return; } } else if (OpenCloseMode.HasFlag(OpenCloseModes.Tap)) { return; } HamburgerCommand.Execute(null); }
private void PaneContent_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e) { HamburgerCommand.Execute(null); }
public HamburgerMenu() { InitializeComponent(); if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { // nothing } else { PrimaryButtons = new ObservableItemCollection <HamburgerButtonInfo>(); SecondaryButtons = new ObservableItemCollection <HamburgerButtonInfo>(); KeyboardService.Instance.AfterWindowZGesture = () => { HamburgerCommand.Execute(null); }; ShellSplitView.RegisterPropertyChangedCallback(SplitView.IsPaneOpenProperty, (d, e) => { DebugWrite($"Current:{(d as SplitView).IsPaneOpen}"); // this can occur if the user resizes before it loads if (_SecondaryButtonStackPanel == null) { return; } // secondary layout if (SecondaryButtonOrientation.Equals(Orientation.Horizontal) && ShellSplitView.IsPaneOpen) { _SecondaryButtonStackPanel.Orientation = Orientation.Horizontal; } else { _SecondaryButtonStackPanel.Orientation = Orientation.Vertical; } // overall events if ((d as SplitView).IsPaneOpen) { PaneOpened?.Invoke(ShellSplitView, EventArgs.Empty); PaneOpen?.Invoke(ShellSplitView, EventArgs.Empty); } else { PaneClosed?.Invoke(ShellSplitView, EventArgs.Empty); } // this will keep the two properties in sync if (!d.GetValue(e).Equals(IsOpen)) { IsOpen = !IsOpen; } }); ShellSplitView.RegisterPropertyChangedCallback(SplitView.DisplayModeProperty, (d, e) => { DebugWrite($"Current:{ShellSplitView.DisplayMode}"); // this will keep the two properties in sync DisplayMode = ShellSplitView.DisplayMode; }); Loaded += (s, e) => { // look to see if any brush property has been set var any = GetType().GetRuntimeProperties() .Where(x => x.PropertyType == typeof(SolidColorBrush)) .Any(x => x.GetValue(this) != null); // this is the default color if the user supplies none if (!any) { AccentColor = (Color)Resources["SystemAccentColor"]; } // in case the developer has defined zero buttons if (NavButtonCount == 0) { _areNavButtonsLoaded = true; } }; } }
public HamburgerMenu() { this.InitializeComponent(); new KeyboardService().AfterWindowZGesture = () => { HamburgerCommand.Execute(null); }; }
private void HamburgerMenu_Loaded(object sender, RoutedEventArgs e) { new KeyboardService().AfterWindowZGesture = () => { HamburgerCommand.Execute(null); }; }