Fishman.Maui.Shell.MarkerModifier
10.3.0
dotnet add package Fishman.Maui.Shell.MarkerModifier --version 10.3.0
NuGet\Install-Package Fishman.Maui.Shell.MarkerModifier -Version 10.3.0
<PackageReference Include="Fishman.Maui.Shell.MarkerModifier" Version="10.3.0" />
<PackageVersion Include="Fishman.Maui.Shell.MarkerModifier" Version="10.3.0" />
<PackageReference Include="Fishman.Maui.Shell.MarkerModifier" />
paket add Fishman.Maui.Shell.MarkerModifier --version 10.3.0
#r "nuget: Fishman.Maui.Shell.MarkerModifier, 10.3.0"
#:package Fishman.Maui.Shell.MarkerModifier@10.3.0
#addin nuget:?package=Fishman.Maui.Shell.MarkerModifier&version=10.3.0
#tool nuget:?package=Fishman.Maui.Shell.MarkerModifier&version=10.3.0
Maui.Shell.MarkerModifier
Maui.Shell.MarkerModifier is a lightweight .NET MAUI library for styling and customizing Shell navigation visual markers (selection indicators).
Starting with version 10.3.0, the library provides the modern ShellMarker Attached Properties API for declarative styling directly in XAML with full Hot Reload support.
✨ Features
- 🎨 Declarative XAML Integration: Set Color, Dimensions (Width, Height), CornerRadius, Margin, and Visibility directly on your
<Shell>root element. - 🔥 Hot Reload Support: Tweak marker appearance at runtime without restarting your application.
- 🌓 Theme-Aware (Windows WinUI 3): Fully persists custom indicator styling across system theme changes (Light / Dark mode).
- 📱 Multi-Platform Architecture: Windows (WinUI 3) selection indicators fully styled; Android and iOS platform hooks prepared.
- 🔄 100% Backwards Compatible: Retains
MarkerWindowsExtensionsfor projects upgrading from 10.2.0.
📦 Installation
Install the package via the .NET CLI:
dotnet add package Fishman.Maui.Shell.MarkerModifier --version 10.3.0
Or via the NuGet Package Manager Console:
Install-Package Fishman.Maui.Shell.MarkerModifier -Version 10.3.0
🚀 Getting Started
1. Setup in AppShell.xaml
Add the xmlns:marker namespace and apply the ShellMarker attached properties to your root <Shell> tag:
<Shell x:Class="MyMauiApp.AppShell"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:marker="clr-namespace:Maui.Shell.MarkerModifier;assembly=Maui.Shell.MarkerModifier"
xmlns:local="clr-namespace:MyMauiApp"
Title="MyMauiApp"
FlyoutBehavior="Locked"
marker:ShellMarker.Color="DarkGoldenrod"
marker:ShellMarker.Width="30"
marker:ShellMarker.Height="30"
marker:ShellMarker.CornerRadius="6"
marker:ShellMarker.Margin="4,0,4,0"
marker:ShellMarker.IsVisible="True">
<ShellContent Title="Home"
ContentTemplate="{DataTemplate local:MainPage}"
Route="MainPage" />
<ShellContent Title="Settings"
ContentTemplate="{DataTemplate local:SettingsPage}"
Route="SettingsPage" />
</Shell>
Tip: Because
Maui.Shell.MarkerModifierdefines[XmlnsDefinition], you can also useShellMarker.*directly without declaring a custom namespace in many XAML compilers!
⚙️ Available Attached Properties
All properties can be applied via the ShellMarker class (or via MarkerWindowsExtensions for 10.2.0 compatibility):
| Property | Type | Default Value | Description |
|---|---|---|---|
Color |
Color? |
null |
Marker foreground color. |
Width |
double |
-1 |
Width of the marker bar (vertical indicator in left navigation). Set to 0 to hide. |
Height |
double |
-1 |
Height of the marker bar (horizontal indicator in top navigation). Set to 0 to hide. |
CornerRadius |
CornerRadius |
-1 |
Corner rounding for the marker bar. |
Margin |
Thickness |
-1 |
Margin spacing around the selection indicator. |
IsVisible |
bool |
true |
Toggles whether the marker is rendered. When false, size collapses to 0. |
⚠️ Migration Notes
- Upgrading from 10.2.0: The
MarkerWindowsExtensionsclass is preserved and delegates toShellMarker. Existing code usingmarker:MarkerWindowsExtensions.Colorwill continue to compile and run seamlessly. - Upgrading from 10.1.0 or older: The fluent builder method
.UseShellMarker()inMauiProgram.csis deprecated in favor of declarative XAML Attached Properties.
📄 License
Distributed under the Boost Software License – Version 1.0. See License.txt for details.
Copyright (c) 2025–2026 Fishman. Built for the .NET MAUI community.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0-android36.0 is compatible. net10.0-ios26.0 is compatible. net10.0-maccatalyst26.0 is compatible. net10.0-windows10.0.19041 is compatible. |
-
net10.0-android36.0
- Microsoft.Maui.Controls (>= 10.0.20)
-
net10.0-ios26.0
- Microsoft.Maui.Controls (>= 10.0.20)
-
net10.0-maccatalyst26.0
- Microsoft.Maui.Controls (>= 10.0.20)
-
net10.0-windows10.0.19041
- Microsoft.Maui.Controls (>= 10.0.20)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version 10.3.0:
- Added modern, clean ShellMarker XAML Attached Properties API (Color, Width, Height, CornerRadius, Margin, IsVisible).
- Fixed WinUI 3 resource type handling by using SolidColorBrush for NavigationViewSelectionIndicatorForeground.
- Added support for system theme switching (Light/Dark) without marker color resets.
- Fixed static initialization null-reference risks and removed crash hazards on null bindings.
- Added platform architecture support for Android, iOS, and MacCatalyst.
- Full backwards compatibility with version 10.2.0 MarkerWindowsExtensions.