diff --git a/src/Avalonia.Controls/VirtualizingStackPanel.cs b/src/Avalonia.Controls/VirtualizingStackPanel.cs index 3f539ce198..f2b42b0b7e 100644 --- a/src/Avalonia.Controls/VirtualizingStackPanel.cs +++ b/src/Avalonia.Controls/VirtualizingStackPanel.cs @@ -226,7 +226,7 @@ namespace Avalonia.Controls { if (toIndex < 0) toIndex = count - 1; - else if (toIndex >= count - 1) + else if (toIndex >= count) toIndex = 0; } diff --git a/tests/Avalonia.Controls.UnitTests/ListBoxTests.cs b/tests/Avalonia.Controls.UnitTests/ListBoxTests.cs index 3f1a3b6342..8170545f68 100644 --- a/tests/Avalonia.Controls.UnitTests/ListBoxTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ListBoxTests.cs @@ -759,6 +759,7 @@ namespace Avalonia.Controls.UnitTests var lbItems = target.GetLogicalChildren().OfType().ToArray(); var first = lbItems.First(); + var beforeLast = lbItems[^2]; var last = lbItems.Last(); first.Focus(); @@ -769,6 +770,12 @@ namespace Avalonia.Controls.UnitTests RaiseKeyEvent(target, Key.Up); Assert.Equal(true, last.IsSelected); + RaiseKeyEvent(target, Key.Up); + Assert.Equal(true, beforeLast.IsSelected); + + RaiseKeyEvent(target, Key.Down); + Assert.Equal(true, last.IsSelected); + RaiseKeyEvent(target, Key.Down); Assert.Equal(true, first.IsSelected);