Example #1
0
        public static void UpdateFlyoutVerticalScrollMode(this MauiNavigationView navigationView, ScrollMode scrollMode)
        {
            var scrollViewer = navigationView.MenuItemsScrollViewer;

            if (scrollViewer != null)
            {
                switch (scrollMode)
                {
                case ScrollMode.Disabled:
                    scrollViewer.VerticalScrollMode          = WScrollMode.Disabled;
                    scrollViewer.VerticalScrollBarVisibility = Microsoft.UI.Xaml.Controls.ScrollBarVisibility.Hidden;
                    break;

                case ScrollMode.Enabled:
                    scrollViewer.VerticalScrollMode          = WScrollMode.Enabled;
                    scrollViewer.VerticalScrollBarVisibility = Microsoft.UI.Xaml.Controls.ScrollBarVisibility.Visible;
                    break;

                default:
                    scrollViewer.VerticalScrollMode          = WScrollMode.Auto;
                    scrollViewer.VerticalScrollBarVisibility = Microsoft.UI.Xaml.Controls.ScrollBarVisibility.Auto;
                    break;
                }
            }
        }
Example #2
0
        public static void UpdateTopNavigationViewItemBackgroundSelectedColor(this MauiNavigationView navigationView, Paint?paint)
        {
            var brush = paint?.ToPlatform();

            if (navigationView.TopNavArea != null)
            {
                if (brush is null)
                {
                    navigationView.TopNavArea.Resources.Remove("TopNavigationViewItemBackgroundSelected");
                    navigationView.TopNavArea.Resources.Remove("TopNavigationViewItemBackgroundSelectedPointerOver");
                    navigationView.TopNavArea.Resources.Remove("TopNavigationViewItemBackgroundSelectedPressed");
                }
                else
                {
                    navigationView.TopNavArea.Resources["TopNavigationViewItemBackgroundSelected"]            = brush;
                    navigationView.TopNavArea.Resources["TopNavigationViewItemBackgroundSelectedPointerOver"] = brush;
                    navigationView.TopNavArea.Resources["TopNavigationViewItemBackgroundSelectedPressed"]     = brush;
                }
            }

            if (navigationView.MenuItemsSource is IList <NavigationViewItemViewModel> items)
            {
                foreach (var item in items)
                {
                    item.SelectedBackground = brush;
                }
            }
        }
Example #3
0
        public static void UpdateFlyoutBehavior(this MauiNavigationView navigationView, IFlyoutView flyoutView)
        {
            switch (flyoutView.FlyoutBehavior)
            {
            case FlyoutBehavior.Flyout:
                navigationView.IsPaneToggleButtonVisible = true;
                // Workaround for
                // https://github.com/microsoft/microsoft-ui-xaml/issues/6493
                navigationView.PaneDisplayMode = NavigationViewPaneDisplayMode.LeftCompact;
                navigationView.PaneDisplayMode = NavigationViewPaneDisplayMode.LeftMinimal;
                break;

            case FlyoutBehavior.Locked:
                navigationView.PaneDisplayMode           = NavigationViewPaneDisplayMode.Left;
                navigationView.IsPaneToggleButtonVisible = false;
                break;

            case FlyoutBehavior.Disabled:
                navigationView.PaneDisplayMode           = NavigationViewPaneDisplayMode.LeftMinimal;
                navigationView.IsPaneToggleButtonVisible = false;
                navigationView.IsPaneOpen = false;
                break;
            }

            if (navigationView is RootNavigationView rootNavigationView)
            {
                rootNavigationView.UpdateFlyoutPanelMargin();
            }
        }
        public virtual void Connect(IView view)
        {
            var nativeView = view.ToNative(_mauiContext);

            NavigationView rootNavigationView;

            if (nativeView is NavigationView nv)
            {
                rootNavigationView = nv;
                _rootView.Content  = nativeView;
            }
            else
            {
                rootNavigationView         = new MauiNavigationView();
                rootNavigationView.Content = nativeView;
                _rootView.Content          = rootNavigationView;
            }

            var nativeWindow = _mauiContext.GetNativeWindow();

            nativeWindow.Activated += OnWindowActivated;

            UpdateAppTitleBar(true);
            SetWindowTitle(_mauiContext.GetNativeWindow().GetWindow()?.Title);
        }
Example #5
0
 public static void UpdateFlyoutWidth(this MauiNavigationView navigationView, IFlyoutView flyoutView)
 {
     if (flyoutView.FlyoutWidth >= 0)
     {
         navigationView.OpenPaneLength = flyoutView.FlyoutWidth;
     }
     else
     {
         navigationView.OpenPaneLength = 320;
     }
     // At some point this Template Setting is going to show up with a bump to winui
     //handler.PlatformView.OpenPaneLength = handler.PlatformView.TemplateSettings.OpenPaneWidth;
 }
Example #6
0
 public static void UpdateTopNavAreaBackground(this MauiNavigationView navigationView, Paint?paint)
 {
     // Background property is set via {ThemeResource NavigationViewTopPaneBackground} in the Control Template
     // AFAICT you can't modify properties set by ThemeResource at runtime so we have to just update this value directly
     if (paint != null)
     {
         navigationView.TopNavArea?.UpdateBackground(paint, null);
     }
     else if (Application.Current.Resources.TryGetValue("NavigationViewTopPaneBackground", out object value) && value is WBrush brush)
     {
         navigationView.TopNavArea?.UpdateBackground(null, brush);
     }
 }
Example #7
0
        public static void UpdatePaneBackground(this MauiNavigationView navigationView, Paint?paint)
        {
            var rootSplitView = navigationView.RootSplitView;
            var brush         = paint?.ToPlatform();

            if (brush == null)
            {
                object?color = null;
                if (navigationView.IsPaneOpen)
                {
                    color = navigationView.Resources["NavigationViewExpandedPaneBackground"];
                }
                else
                {
                    color = navigationView.Resources["NavigationViewDefaultPaneBackground"];
                }

                if (rootSplitView != null)
                {
                    if (color is WBrush colorBrush)
                    {
                        rootSplitView.PaneBackground = colorBrush;
                    }
                    else if (color is global::Windows.UI.Color uiColor)
                    {
                        rootSplitView.PaneBackground = new WSolidColorBrush(uiColor);
                    }
                }
            }
            else
            {
                if (rootSplitView != null)
                {
                    rootSplitView.PaneBackground = brush;
                }
            }
        }
Example #8
0
 public NavigationRootManager(IMauiContext mauiContext)
 {
     _mauiContext    = mauiContext;
     _navigationView = new MauiNavigationView();
     _navigationView.BackRequested += OnBackRequested;
 }