summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Xamarin.Forms.Core.UnitTests/GroupViewUnitTests.cs13
-rw-r--r--Xamarin.Forms.Core/Layout.cs3
2 files changed, 16 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/GroupViewUnitTests.cs b/Xamarin.Forms.Core.UnitTests/GroupViewUnitTests.cs
index 61e38cf1..fe823b1a 100644
--- a/Xamarin.Forms.Core.UnitTests/GroupViewUnitTests.cs
+++ b/Xamarin.Forms.Core.UnitTests/GroupViewUnitTests.cs
@@ -288,5 +288,18 @@ namespace Xamarin.Forms.Core.UnitTests
Assert.False (added);
Assert.False (removed);
}
+
+ [Test]
+ public void AddToSecondLayoutRemovesFromOriginal()
+ {
+ var child = new BoxView();
+ var layout1 = new NaiveLayout();
+ var layout2 = new NaiveLayout();
+
+ layout1.Children.Add(child);
+ layout2.Children.Add(child);
+
+ Assert.False(layout1.Children.Contains(child));
+ }
}
}
diff --git a/Xamarin.Forms.Core/Layout.cs b/Xamarin.Forms.Core/Layout.cs
index c611777c..a7864070 100644
--- a/Xamarin.Forms.Core/Layout.cs
+++ b/Xamarin.Forms.Core/Layout.cs
@@ -395,6 +395,9 @@ namespace Xamarin.Forms
void OnInternalAdded(View view)
{
+ var parent = view.Parent as Layout;
+ parent?.InternalChildren.Remove(view);
+
OnChildAdded(view);
if (ShouldInvalidateOnChildAdded(view))
InvalidateLayout();