diff --git a/src/Avalonia.Styling/StyledElement.cs b/src/Avalonia.Styling/StyledElement.cs index 241ca1d0ec..1a4bc5b3a3 100644 --- a/src/Avalonia.Styling/StyledElement.cs +++ b/src/Avalonia.Styling/StyledElement.cs @@ -453,18 +453,14 @@ namespace Avalonia NotifyResourcesChanged(new ResourcesChangedEventArgs()); - if (Parent is ILogicalRoot || Parent?.IsAttachedToLogicalTree == true || this is ILogicalRoot) - { - var newRoot = FindLogicalRoot(this); - - if (newRoot == null) - { - throw new AvaloniaInternalException("Parent is attached to logical tree but cannot find root."); - } + var newRoot = FindLogicalRoot(this); + if (newRoot is object) + { var e = new LogicalTreeAttachmentEventArgs(newRoot, this, parent); OnAttachedToLogicalTreeCore(e); } + #nullable disable RaisePropertyChanged( ParentProperty, @@ -618,7 +614,7 @@ namespace Avalonia } } - private static ILogicalRoot? FindLogicalRoot(IStyleHost e) + private static ILogicalRoot? FindLogicalRoot(IStyleHost? e) { while (e != null) {