Browse Source

More work on items removed.

pull/558/head
Steven Kirk 10 years ago
parent
commit
7ca7f53537
  1. 6
      src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs
  2. 28
      tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs

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

@ -272,10 +272,8 @@ namespace Avalonia.Controls.Presenters
{
RecycleContainersForMove(delta);
}
else
{
RecycleContainers();
}
RecycleContainers();
}
}

28
tests/Avalonia.Controls.UnitTests/Presenters/ItemsPresenterTests_Virtualization_Simple.cs

@ -254,7 +254,7 @@ namespace Avalonia.Controls.UnitTests.Presenters
}
[Fact]
public void Removing_Items_When_Scrolled_To_End_Should_Add_Containers_At_Top()
public void Removing_Items_When_Scrolled_To_End_Should_Recyle_Containers_At_Top()
{
var target = CreateTarget(itemCount: 20, useAvaloniaList: true);
@ -277,6 +277,32 @@ namespace Avalonia.Controls.UnitTests.Presenters
Assert.Equal(expected, actual);
}
[Fact]
public void Removing_Items_When_Scrolled_To_Near_End_Should_Recycle_Containers_At_Bottom_And_Top()
{
var target = CreateTarget(itemCount: 20, useAvaloniaList: true);
target.ApplyTemplate();
target.Measure(new Size(100, 100));
target.Arrange(new Rect(0, 0, 100, 100));
((ILogicalScrollable)target).Offset = new Vector(0, 9);
var expected = Enumerable.Range(9, 10).Select(x => $"Item {x}").ToList();
var items = (AvaloniaList<string>)target.Items;
var actual = target.Panel.Children.Select(x => x.DataContext).ToList();
Assert.Equal(expected, actual);
items.RemoveRange(15, 3);
expected = Enumerable.Range(7, 8).Select(x => $"Item {x}")
.Concat(Enumerable.Range(18, 2).Select(x => $"Item {x}"))
.ToList();
actual = target.Panel.Children.Select(x => x.DataContext).ToList();
Assert.Equal(expected, actual);
}
[Fact]
public void Setting_Items_To_Null_Should_Remove_Containers()
{

Loading…
Cancel
Save