Browse Source

Track TabIndex value in NumericUpDown (#19348)

* Track TabIndex value in NumericUpDown

* Use template

* Add TabNavigationProperty.OverrideDefaultValue
release/11.3.4
Tim Miller 6 months ago
committed by Julien Lebosquain
parent
commit
caec760954
  1. 2
      src/Avalonia.Controls/NumericUpDown/NumericUpDown.cs
  2. 17
      tests/Avalonia.Controls.UnitTests/NumericUpDownTests.cs

2
src/Avalonia.Controls/NumericUpDown/NumericUpDown.cs

@ -379,6 +379,7 @@ namespace Avalonia.Controls
FocusableProperty.OverrideDefaultValue<NumericUpDown>(true);
IsTabStopProperty.OverrideDefaultValue<NumericUpDown>(false);
KeyboardNavigation.TabNavigationProperty.OverrideDefaultValue<NumericUpDown>(KeyboardNavigationMode.Local);
}
/// <inheritdoc />
@ -408,6 +409,7 @@ namespace Avalonia.Controls
if (TextBox != null)
{
TextBox.Text = Text;
TextBox[!TabIndexProperty] = this[!TabIndexProperty];
TextBox.PointerPressed += TextBoxOnPointerPressed;
_textBoxTextChangedSubscription = TextBox.GetObservable(TextBox.TextProperty).Subscribe(txt => TextBoxOnTextChanged());
}

17
tests/Avalonia.Controls.UnitTests/NumericUpDownTests.cs

@ -152,5 +152,22 @@ namespace Avalonia.Controls.UnitTests
}.RegisterInNameScope(scope);
});
}
[Fact]
public void TabIndex_Should_Be_Synchronized_With_Inner_TextBox()
{
RunTest((control, textbox) =>
{
// Set TabIndex on NumericUpDown
control.TabIndex = 5;
// The inner TextBox should inherit the same TabIndex
Assert.Equal(5, textbox.TabIndex);
// Change TabIndex and verify it gets synchronized
control.TabIndex = 10;
Assert.Equal(10, textbox.TabIndex);
});
}
}
}

Loading…
Cancel
Save