AvaloniaUI/Avalonia · error · InvalidOperationException

Visual already has a parent

Error message

Visual already has a parent

What it means

Error "Visual already has a parent" thrown in AvaloniaUI/Avalonia.

Source

Thrown at src/Avalonia.Base/Rendering/Composition/VisualCollection.cs:79

        partial void OnRemoved(CompositionVisual item)
        {
            item.Parent = null;
            RemoveHitTestChild(item);
        }

        partial void OnBeforeClear()
        {
            foreach (var i in this)
                i.Parent = null;
        }

        partial void OnClear() => ClearHitTestChildren();

        partial void OnBeforeAdded(CompositionVisual item)
        {
            if (item.Parent != null)
                throw new InvalidOperationException("Visual already has a parent");
            item.Parent = _owner;
        }

        private void AddHitTestChild(CompositionVisual item)
        {
            if (_owner is CompositionContainerVisual container)
                container.AddHitTestChild(item);
        }

        private void RemoveHitTestChild(CompositionVisual item)
        {
            if (_owner is CompositionContainerVisual container)
                container.RemoveHitTestChild(item);
        }

        private void ClearHitTestChildren()
        {
            if (_owner is CompositionContainerVisual container)

View on GitHub (pinned to 11c5427268)

Solutions

  1. Remove the visual from its current parent visual collection before adding it to a new one.
  2. Create a new CompositionVisual instead of re-parenting an already attached one.

When it happens

Trigger: Raised when adding a CompositionVisual to a VisualCollection while it already belongs to another parent collection. Defend by removing the visual from its current parent before re-parenting, and by tracking ownership in one place.

Common situations: See trigger scenarios.


AI-assisted analysis of AvaloniaUI/Avalonia@11c5427268 (2026-08-13). Data as JSON: /api/errors/fa31a30353fa086e. Report an issue: GitHub.