using Avalonia.Controls; using Avalonia.Input; using GSS2.ViewModels; using GSS2.Views; namespace GSS2.Controls; public class TouchNumericUpDown : NumericUpDown { protected override Type StyleKeyOverride => typeof(NumericUpDown); public TouchNumericUpDown() : base() { AddHandler(PointerPressedEvent, OnPointerPressed, handledEventsToo: true); } private void OnPointerPressed(object? sender, PointerPressedEventArgs ea) { if (ea.Pointer.Type != PointerType.Touch) return; var navigation = (Application.Current as Application)?.Navigation; if (navigation is null) return; var keyboardViewModel = new NumericKeyboardViewModel(navigation); keyboardViewModel.Value = (double?)Value; keyboardViewModel.Closes += (_, ea) => { if (ea is null) return; Value = (decimal)ea.Value; }; var keyboardView = new NumericKeyboardView() { DataContext = keyboardViewModel }; navigation.NavigateTo(keyboardView); } }