using Avalonia.Controls; using Avalonia.Input; using Avalonia.Interactivity; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InABox.Avalonia.Components; public class DoubleBox : NumericUpDown { protected override Type StyleKeyOverride => typeof(NumericUpDown); public DoubleBox() { ParsingNumberStyle = NumberStyles.Number; ShowButtonSpinner = false; AddHandler(TextInputEvent, TunnelTextEvent, RoutingStrategies.Direct | RoutingStrategies.Tunnel); } private void TunnelTextEvent(object? sender, TextInputEventArgs e) { e.Text = new string(e.Text?.Where(c => Char.IsDigit(c) || c == '.').ToArray()); if(e.Text == "") { e.Handled = true; } } }