Ejemplo n.º 1
0
 public HamburgerMenu()
 {
     this.InitializeComponent();
     if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)
     {
         return;
     }
     new KeyboardService().AfterWindowZGesture = () => { HamburgerCommand.Execute(null); };
 }
Ejemplo n.º 2
0
        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;
                    }
                };
            }
        }
Ejemplo n.º 3
0
        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");
                };
            }
        }
Ejemplo n.º 4
0
 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); };
     }
 }
Ejemplo n.º 5
0
        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");
                };
            }
        }
Ejemplo n.º 6
0
        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;
            }
        }
Ejemplo n.º 7
0
 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;
             }
         };
     }
 }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
 private void PaneContent_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
 {
     HamburgerCommand.Execute(null);
 }
Ejemplo n.º 10
0
        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;
                    }
                };
            }
        }
Ejemplo n.º 11
0
 public HamburgerMenu()
 {
     this.InitializeComponent();
     new KeyboardService().AfterWindowZGesture = () => { HamburgerCommand.Execute(null); };
 }
Ejemplo n.º 12
0
 private void HamburgerMenu_Loaded(object sender, RoutedEventArgs e)
 {
     new KeyboardService().AfterWindowZGesture = () => { HamburgerCommand.Execute(null); };
 }