From 42ea736be2fadfb27bc4889162b65a614b44d46a Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sat, 17 Oct 2015 18:12:39 +0200 Subject: [PATCH] Reset ItemsPresenter on Move for now. Need to implement this in a more efficient manner. --- .../Presenters/ItemsPresenter.cs | 2 ++ .../Presenters/ItemsPresenterTests.cs | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/Perspex.Controls/Presenters/ItemsPresenter.cs b/src/Perspex.Controls/Presenters/ItemsPresenter.cs index 0a80376aa7..ecd74e7bdb 100644 --- a/src/Perspex.Controls/Presenters/ItemsPresenter.cs +++ b/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)); diff --git a/tests/Perspex.Controls.UnitTests/Presenters/ItemsPresenterTests.cs b/tests/Perspex.Controls.UnitTests/Presenters/ItemsPresenterTests.cs index c6354cc417..db9e6d3aec 100644 --- a/tests/Perspex.Controls.UnitTests/Presenters/ItemsPresenterTests.cs +++ b/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 { "foo", "bar", "baz" }; + var target = new ItemsPresenter + { + Items = items, + }; + + target.ApplyTemplate(); + items.Move(2, 1); + + var text = target.Panel.Children + .OfType() + .Select(x => x.Text) + .ToList(); + + Assert.Equal(new[] { "foo", "baz", "bar" }, text); + } + [Fact] public void Setting_Items_To_Null_Should_Remove_Containers() {