Browse Source

Make scrolling up >= 1 page work

pull/554/head
Steven Kirk 10 years ago
parent
commit
55f05defd1
  1. 4
      src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs
  2. 10
      tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization.cs

4
src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs

@ -135,9 +135,9 @@ namespace Avalonia.Controls.Presenters
var generator = Owner.ItemContainerGenerator;
var selector = Owner.MemberSelector;
var sign = delta < 0 ? -1 : 1;
var move = delta < panel.Children.Count;
var first = delta < 0 && move ? panel.Children.Count + delta : 0;
var count = Math.Min(Math.Abs(delta), panel.Children.Count);
var move = count < panel.Children.Count;
var first = delta < 0 && move ? panel.Children.Count + delta : 0;
var containers = panel.Children.GetRange(first, count).ToList();
for (var i = 0; i < containers.Count; ++i)

10
tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization.cs

@ -248,6 +248,16 @@ namespace Avalonia.Controls.UnitTests.Presenters
{
Assert.Equal(items[i + 20], target.Panel.Children[i].DataContext);
}
scroller.Offset = new Vector(0, 0);
Assert.Equal(new Vector(0, 0), ((ILogicalScrollable)target).Offset);
Assert.Equal(containers, target.Panel.Children);
for (var i = 0; i < target.Panel.Children.Count; ++i)
{
Assert.Equal(items[i], target.Panel.Children[i].DataContext);
}
}
}
}

Loading…
Cancel
Save