Browse Source

fixed remove range, not taking into account if a container yet existed or not.

pull/519/head
Dan Walmsley 11 years ago
parent
commit
09d4f61db2
  1. 12
      src/Perspex.Controls/Generators/ItemContainerGenerator.cs
  2. 1
      src/Perspex.Controls/Presenters/CarouselPresenter.cs

12
src/Perspex.Controls/Generators/ItemContainerGenerator.cs

@ -94,9 +94,15 @@ namespace Perspex.Controls.Generators
/// <inheritdoc/> /// <inheritdoc/>
public virtual IEnumerable<ItemContainer> RemoveRange(int startingIndex, int count) public virtual IEnumerable<ItemContainer> RemoveRange(int startingIndex, int count)
{ {
var result = _containers.GetRange(startingIndex, count); List<ItemContainer> result = new List<ItemContainer>();
_containers.RemoveRange(startingIndex, count);
Dematerialized?.Invoke(this, new ItemContainerEventArgs(startingIndex, result)); if (startingIndex < _containers.Count)
{
result.AddRange(_containers.GetRange(startingIndex, count));
_containers.RemoveRange(startingIndex, count);
Dematerialized?.Invoke(this, new ItemContainerEventArgs(startingIndex, result));
}
return result; return result;
} }

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

@ -115,6 +115,7 @@ namespace Perspex.Controls.Presenters
Panel.Children.RemoveAll(containers.Select(x => x.ContainerControl)); Panel.Children.RemoveAll(containers.Select(x => x.ContainerControl));
} }
break; break;
} }
} }

Loading…
Cancel
Save