Files
GSS2Rework/GSS2/Controls/TouchNumericUpDown.cs
T

42 lines
1.1 KiB
C#

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);
}
}