Browse Source

Fixed ContentPresenter add/remove from logicalchildren otside teamplate

donandren 9 years ago
parent
commit
b89d75f43a
1 changed files with 11 additions and 2 deletions
  1. 11 2
      src/Avalonia.Controls/Presenters/ContentPresenter.cs

+ 11 - 2
src/Avalonia.Controls/Presenters/ContentPresenter.cs

@@ -279,12 +279,21 @@ namespace Avalonia.Controls.Presenters
 
                 if (oldChild?.LogicalParent == this)
                 {
-                    ((ISetLogicalParent)oldChild).SetParent(null);
+                    LogicalChildren.Remove(oldChild);
                 }
 
                 if (newChild.Parent == null)
                 {
-                    ((ISetLogicalParent)newChild).SetParent((ILogical)this.TemplatedParent ?? this);
+                    var templatedLogicalParent = TemplatedParent as ILogical;
+
+                    if (templatedLogicalParent != null)
+                    {
+                        ((ISetLogicalParent)newChild).SetParent(templatedLogicalParent);
+                    }
+                    else
+                    {
+                        LogicalChildren.Add(newChild);
+                    }
                 }
 
                 VisualChildren.Add(newChild);