Skip to content
Document DB v12 - Improved Interceptors with Soft Delete Integration, AI protections, & Admin UI with Aspire Integration! How!?

FrostedGlassView

A view that blurs whatever sits behind it, so content can float over a photo, gradient, or scrolling list with a glassmorphism look. It is not a filter on its own children — the children render crisply on top of the blurred backdrop.

On MAUI the control is FrostedGlassView, a ContentView that drops a native blur surface behind its content. On Blazor it is FrostedGlass, a container that applies CSS backdrop-filter.

  • NuGet downloads for Shiny.Maui.Controls
  • NuGet downloads for Shiny.Blazor.Controls
Frameworks
.NET MAUI
Blazor
Light, dark, and purple-tinted glass cards blurring a photo behind them
  • Real backdrop blur, not a tint — samples the pixels behind the view every frame, so it stays correct while the content underneath scrolls or animates
  • Native per-platform implementationUIVisualEffectView on Apple, RenderEffect on Android 12+, backdrop-filter on the web
  • Automatic light/dark material on Apple — picks the ultra-thin light or dark system material to match the current theme
  • Tint layer on top of the blurTintColor + TintOpacity let you push the glass warmer, cooler, lighter, or darker
  • Corner clippingCornerRadius rounds the blur surface itself, not just the content
<!-- MAUI -->
<Grid>
<Image Source="hero.jpg" Aspect="AspectFill" />
<shiny:FrostedGlassView BlurRadius="20"
TintColor="#80FFFFFF"
TintOpacity="0.6"
CornerRadius="16"
Margin="20"
VerticalOptions="End">
<VerticalStackLayout Padding="20" Spacing="8">
<Label Text="Glass Card" FontSize="20" FontAttributes="Bold" />
<Label Text="Content over a blurred background." FontSize="14" />
</VerticalStackLayout>
</shiny:FrostedGlassView>
</Grid>
@* Blazor *@
<div style="background-image: url('hero.jpg'); background-size: cover;">
<FrostedGlass BlurRadius="20" TintColor="rgba(255,255,255,0.6)" CornerRadius="16">
<h3>Glass Card</h3>
<p>Content over a blurred background.</p>
</FrostedGlass>
</div>
PropertyTypeDefaultDescription
GlassContentView?nullContent rendered on top of the glass. This is the ContentProperty, so child XAML binds to it implicitly
BlurRadiusdouble20Blur strength in pixels
TintColorColor#80FFFFFFTint overlay drawn above the blur
TintOpacitydouble0.6Opacity of the tint overlay
CornerRadiusdouble0Corner radius applied to the glass surface
ParameterTypeDefaultDescription
ChildContentRenderFragment?nullContent rendered on top of the glass
BlurRadiusdouble20Blur strength in pixels
TintColorstringrgba(255, 255, 255, 0.6)CSS color for the tint overlay
CornerRadiusdouble0Border radius in pixels
CssClassstring?nullExtra CSS classes on the root element
Stylestring?nullExtra inline CSS on the root element
PlatformImplementation
iOS / Mac CatalystUIVisualEffectView with the system ultra-thin material — light or dark is chosen from the current theme. Because the material carries its own tint, the control reduces its own tint overlay to avoid double-tinting
Android 12+ (API 31, S)The background behind the view is captured on each pre-draw pass and blurred with RenderEffect
Android 11 and olderRenderEffect is unavailable, so no blur is applied — the view falls back to the semi-transparent tint only
BlazorCSS backdrop-filter: blur() with the -webkit- prefix
  • Over dark backgrounds use a light tint (#80FFFFFF); over light backgrounds use a dark tint (#80000000)
  • Pair with CornerRadius for rounded glass cards, or leave it at 0 for edge-to-edge bars
  • For a translucent nav bar or toolbar, overlay a FrostedGlassView on top of the page content rather than placing it in the layout flow
  • Larger BlurRadius values cost more on Android, since each pre-draw pass re-blurs the captured backdrop — keep it modest on long scrolling lists
claude plugin marketplace add shinyorg/skills
claude plugin install shiny-client@shiny
BLE, GPS, Jobs, Notifications, Push, HTTP Transfers, OBD, Music, Health, DataSync — iOS, Android, Windows, MacOS, Linux, Web
claude plugin install shiny-maui@shiny
Shell, Contact Store
claude plugin install controls@shiny
TableView, BottomSheet, PillView, ImageViewer, Scheduler, Markdown, Mermaid Diagrams — MAUI and Blazor
claude plugin install shiny-mediator@shiny
Mediator/CQRS with middleware and source generators
claude plugin install shiny-data@shiny
DocumentDB and Spatial data libraries
claude plugin install shiny-aspire@shiny
Orleans and Gluetun Aspire integrations
claude plugin install shiny-extensions@shiny
DI, Stores, Reflector, Localization, Hosting modules
copilot plugin marketplace add https://github.com/shinyorg/skills
copilot plugin install shiny-client@shiny
BLE, GPS, Jobs, Notifications, Push, HTTP Transfers, OBD, Music, Health, DataSync — iOS, Android, Windows, MacOS, Linux, Web
copilot plugin install shiny-maui@shiny
Shell, Contact Store
copilot plugin install controls@shiny
TableView, BottomSheet, PillView, ImageViewer, Scheduler, Markdown, Mermaid Diagrams — MAUI and Blazor
copilot plugin install shiny-mediator@shiny
Mediator/CQRS with middleware and source generators
copilot plugin install shiny-data@shiny
DocumentDB and Spatial data libraries
copilot plugin install shiny-aspire@shiny
Orleans and Gluetun Aspire integrations
copilot plugin install shiny-extensions@shiny
DI, Stores, Reflector, Localization, Hosting modules
View Skills Repository