Browse Source

Reset ItemsPresenter on Move for now.

Need to implement this in a more efficient manner.
pull/278/head
Steven Kirk 11 years ago
parent
commit
42ea736be2
  1. 2
      src/Perspex.Controls/Presenters/ItemsPresenter.cs
  2. 20
      tests/Perspex.Controls.UnitTests/Presenters/ItemsPresenterTests.cs

2
src/Perspex.Controls/Presenters/ItemsPresenter.cs

@ -266,6 +266,8 @@ namespace Perspex.Controls.Presenters
break;
case NotifyCollectionChangedAction.Move:
// TODO: Implement Move in a more efficient manner.
case NotifyCollectionChangedAction.Reset:
Panel.Children.RemoveAll(generator.Clear());
Panel.Children.AddRange(generator.Materialize(0, Items, MemberSelector));

20
tests/Perspex.Controls.UnitTests/Presenters/ItemsPresenterTests.cs

@ -115,6 +115,26 @@ namespace Perspex.Controls.UnitTests.Presenters
Assert.Equal(new[] { "foo", "baz", "baz" }, text);
}
[Fact]
public void Moving_Items_Should_Update_Containers()
{
var items = new ObservableCollection<string> { "foo", "bar", "baz" };
var target = new ItemsPresenter
{
Items = items,
};
target.ApplyTemplate();
items.Move(2, 1);
var text = target.Panel.Children
.OfType<TextBlock>()
.Select(x => x.Text)
.ToList();
Assert.Equal(new[] { "foo", "baz", "bar" }, text);
}
[Fact]
public void Setting_Items_To_Null_Should_Remove_Containers()
{

Loading…
Cancel
Save