Skip to content

Spinner

Spinner is a rotating-arc loading indicator, indeterminate only; for a determinate progress bar use Navius.Wpf.Primitives’ NaviusProgress instead. Its template renders a roughly 270-degree arc (a large-arc-flag Path, matching the lucide Loader2 glyph) rotated by an unbounded RotateTransform storyboard. ShouldAnimate is read once at construction from ReducedMotion.AnimationsEnabled, the same guard NaviusSkeleton applies to its loop: when the OS “reduce animations” preference is on, the arc renders statically instead of spinning forever.

xmlns:spinner="clr-namespace:Navius.Wpf.Ui.Spinner;assembly=Navius.Wpf.Ui"
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Navius.Wpf.Ui;component/Themes/Spinner.xaml" />
</ResourceDictionary.MergedDictionaries>
<spinner:NaviusSpinner />
Property Type Default From Description
ShouldAnimate bool true NaviusSpinner Read-only. Snapshotted at construction from ReducedMotion.AnimationsEnabled; gates the rotation storyboard in Themes/Spinner.xaml. Not settable by a consumer.

Default Width/Height are 16x16, set by the style in Themes/Spinner.xaml.

The constructor calls AutomationProperties.SetName(this, "Loading"), setting the Name attached property. NaviusSpinner derives Control directly and overrides no CreateAutomationPeer, though, so it ships no custom automation peer; plain Control provides none by default, so as authored there is no peer to surface that name through the UI Automation tree. The M6 audit called this family “clean and exemplary” for gating its rotation Storyboard on ShouldAnimate, itself snapshotted from ReducedMotion.AnimationsEnabled, and for sourcing its Foreground via DynamicResource. The unit suite verifies ShouldAnimate flips with ReducedMotion.SetTestOverride(() => true/false) and that the template applies with Themes/Spinner.xaml merged; it does not assert the AutomationProperties.Name value.