Skip to content
Introducing AI Conversations: Natural Language Interaction for Your Apps! Learn More

ProgressBar

A progress bar control with gradient fill and a configurable Vista-style shimmer pulse that sweeps left-to-right across the filled portion of the bar. Supports determinate, indeterminate, text overlay, and timed/value-triggered pulse animations.

  • NuGet downloads for Shiny.Maui.Controls
  • NuGet downloads for Shiny.Blazor.Controls
Frameworks
.NET MAUI
Blazor
ProgressBar
  • Gradient Fill — Linear gradient from GradientStartColor to GradientEndColor across the filled bar.
  • Vista-Style Shimmer Pulse — A translucent highlight sweeps left-to-right across the bar. Configurable width (PulseLength) and speed (PulseSpeed).
  • Pulse Triggers — Pulse on every value change (PulseOnValueChange) or on a repeating timer (PulseInterval).
  • Text Overlay — Show percentage or custom-formatted text centered on the bar.
  • Indeterminate Mode — A sliding bar animation for unknown progress.
  • Standard PropertiesValue, Minimum, Maximum, TrackColor, BarColor, TrackHeight, CornerRadius.
<shiny:ProgressBar Value="{Binding Progress}"
TrackHeight="12"
CornerRadius="6"
UseGradient="True"
GradientStartColor="#3B82F6"
GradientEndColor="#8B5CF6"
PulseEnabled="True"
PulseOnValueChange="True"
PulseLength="0.4"
PulseSpeed="800" />
<ProgressBar Value="@progress"
TrackHeight="12"
CornerRadius="6px"
UseGradient="true"
GradientStartColor="#3B82F6"
GradientEndColor="#8B5CF6"
PulseEnabled="true"
PulseOnValueChange="true"
PulseLength="0.4"
PulseSpeed="800" />
PropertyType (MAUI / Blazor)DefaultDescription
Valuedouble0Current progress value (TwoWay)
Minimumdouble0Minimum value
Maximumdouble100Maximum value
TrackColorColor / string#E5E7EBBackground track color
BarColorColor / string#3B82F6Fill color when gradient is disabled
TrackHeightdouble8Track height in pixels
CornerRadiusdouble / string4 / “4px”Corner radius
UseGradientboolfalseEnable gradient fill
GradientStartColorColor / string#3B82F6Left gradient color
GradientEndColorColor / string#8B5CF6Right gradient color
PulseEnabledboolfalseEnable shimmer pulse
PulseOnValueChangebooltrueTrigger pulse when Value changes
PulseIntervalTimeSpan0Repeating pulse timer (e.g. 2 seconds)
PulseColorColor / stringWhite / “rgba(255,255,255,0.4)“Shimmer color
PulseOpacitydouble0.4Peak shimmer opacity (MAUI only)
PulseLengthdouble0.4Width of shimmer as fraction of fill (0.05–1.0)
PulseSpeedint800Milliseconds for one left-to-right sweep
ShowTextboolfalseShow text overlay
TextFormatstring”{0:0}%“Format string (receives percentage 0–100)
TextColorColor / stringWhiteText color
FontSizedouble11Text font size
IsIndeterminateboolfalseEnable indeterminate animation
NameTypeDescription
ValueChangedEventEventHandler<double>Fires when Value changes (MAUI)
ValueChangedEventCallback<double>Fires when Value changes (Blazor)
ValueChangedCommandICommandCommand fired on value change (MAUI)
<shiny:ProgressBar Value="75"
TrackHeight="20"
CornerRadius="10"
ShowText="True" />
<shiny:ProgressBar Value="{Binding DownloadProgress}"
UseGradient="True"
GradientStartColor="#6366F1"
GradientEndColor="#EC4899"
PulseEnabled="True"
PulseOnValueChange="False"
PulseInterval="0:00:02"
PulseLength="0.6"
PulseSpeed="1200" />
<shiny:ProgressBar Value="{Binding UploadProgress}"
BarColor="#10B981"
PulseEnabled="True"
PulseOnValueChange="False"
PulseInterval="0:00:01"
PulseLength="0.2"
PulseSpeed="500" />
<shiny:ProgressBar IsIndeterminate="True"
UseGradient="True"
GradientStartColor="#14B8A6"
GradientEndColor="#3B82F6" />
<ProgressBar IsIndeterminate="true"
UseGradient="true"
GradientStartColor="#14B8A6"
GradientEndColor="#3B82F6" />

The pulse is a Vista-style shimmer sweep — a translucent gradient highlight (transparent -> color -> transparent) that animates from the left edge to the right edge of the filled portion.

  • MAUI: A BoxView with a LinearGradientBrush animates TranslationX across the fill, clipped by a parent container.
  • Blazor: A CSS ::after pseudo-element with linear-gradient animates via @keyframes from left to right.

Configure the look:

  • PulseLength controls width: 0.2 = narrow beam, 0.6 = wide glow, 1.0 = full bar flash.
  • PulseSpeed controls animation duration: 500 = fast, 1200 = slow and smooth.
  • PulseColor / PulseOpacity control the highlight appearance.