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; } } }
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; } } }
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); }
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; }
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); } }
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; } } }
public NavigationRootManager(IMauiContext mauiContext) { _mauiContext = mauiContext; _navigationView = new MauiNavigationView(); _navigationView.BackRequested += OnBackRequested; }