Spinner
Overview
Section titled “Overview”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 />Properties
Section titled “Properties”| 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.
UIA mechanism
Section titled “UIA mechanism”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.