NumberInput
A numeric field that keeps its text a number and steps by its own rules, as uikit:NumberInput.
<StackPanel Spacing="12" Width="200" HorizontalAlignment="Left">
<uikit:NumberInput Value="0.1" Increment="0.2" />
<uikit:NumberInput Value="1234.56" Increment="100" Minimum="0">
<uikit:Inputs.MaskPattern>
<uikit:NumberMask Separator="," Fraction="2" />
</uikit:Inputs.MaskPattern>
</uikit:NumberInput>
<uikit:NumberInput Value="0.9" Minimum="0" Loaded="OnLoaded" />
</StackPanel>Usage
uikit:NumberInput is a NumericUpDown with the look of the Number Input that keeps its text a number while it is typed: an optional sign, digits and one point, with full-width digits and signs typed as ASCII. uikit:Inputs.MaskPattern, Pattern and Validate set on it replace the rule; a uikit:NumberMask with a Separator groups the digits (see Input).
A step (the buttons, ↑ and ↓, the mouse wheel) moves the typed value by Increment, keeps the decimals of the value and the step (0.1 + 0.2 gives 0.3), clamps to Minimum and Maximum, and does nothing when it cannot move the value that way. StepBy is a Func<decimal, StepAction, decimal> that gives the step for the value and the direction. With StepsValue="False", a step only raises Step with its Action (Increment or Decrement), and the app sets the value; Step is also raised for a step whose value the input's rules reject.
The demo has steps of 0.2 that keep one decimal, an amount grouped by thousands stepped by 100, and a StepBy that steps by 0.1 below 1 and by 0.5 above it.