Browse Source

Add test for when carousel Items is reset and virtualized.

pull/1639/head
Dan Walmsley 8 years ago
parent
commit
3536496f21
  1. 1
      src/Avalonia.Controls/Presenters/CarouselPresenter.cs
  2. 37
      tests/Avalonia.Controls.UnitTests/CarouselTests.cs

1
src/Avalonia.Controls/Presenters/CarouselPresenter.cs

@ -120,7 +120,6 @@ namespace Avalonia.Controls.Presenters
break;
case NotifyCollectionChangedAction.Reset:
if(!IsVirtualized)
{
var generator = ItemContainerGenerator;
var containers = generator.Containers.ToList();

37
tests/Avalonia.Controls.UnitTests/CarouselTests.cs

@ -133,6 +133,43 @@ namespace Avalonia.Controls.UnitTests
Assert.Equal("Bar", ((TextBlock)child).Text);
}
[Fact]
public void Selected_Item_Changes_To_First_Item_When_Items_Property_Changes_And_Virtualized()
{
var items = new ObservableCollection<string>
{
"Foo",
"Bar",
"FooBar"
};
var target = new Carousel
{
Template = new FuncControlTemplate<Carousel>(CreateTemplate),
Items = items
};
target.ApplyTemplate();
target.Presenter.ApplyTemplate();
Assert.Single(target.GetLogicalChildren());
var child = target.GetLogicalChildren().Single();
Assert.IsType<TextBlock>(child);
Assert.Equal("Foo", ((TextBlock)child).Text);
var newItems = items.ToList();
newItems.RemoveAt(0);
target.Items = newItems;
child = target.GetLogicalChildren().Single();
Assert.IsType<TextBlock>(child);
Assert.Equal("Bar", ((TextBlock)child).Text);
}
[Fact]
public void Selected_Index_Is_Maintained_Carousel_Created_With_Non_Zero_SelectedIndex()
{

Loading…
Cancel
Save