diff --git a/src/Avalonia.Controls/Control.cs b/src/Avalonia.Controls/Control.cs
index a40b59d60a..c9a3b2940d 100644
--- a/src/Avalonia.Controls/Control.cs
+++ b/src/Avalonia.Controls/Control.cs
@@ -521,6 +521,7 @@ namespace Avalonia.Controls
}
_parent = (IControl)parent;
+ ((ILogical)this).NotifyResourcesChanged(new ResourcesChangedEventArgs());
if (_parent is IStyleRoot || _parent?.IsAttachedToLogicalTree == true || this is IStyleRoot)
{
diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs
index a8e93b29f0..1a036546b4 100644
--- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs
+++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs
@@ -393,6 +393,38 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
}
}
+ [Fact]
+ public void Control_Property_Is_Updated_When_Parent_Is_Changed()
+ {
+ var xaml = @"
+
+
+ #ff506070
+
+
+
+";
+
+ var loader = new AvaloniaXamlLoader();
+ var userControl = (UserControl)loader.Load(xaml);
+ var border = userControl.FindControl("border");
+
+ DelayedBinding.ApplyBindings(border);
+
+ var brush = (SolidColorBrush)border.Background;
+ Assert.Equal(0xff506070, brush.Color.ToUint32());
+
+ userControl.Content = null;
+
+ Assert.Null(border.Background);
+
+ userControl.Content = border;
+
+ brush = (SolidColorBrush)border.Background;
+ Assert.Equal(0xff506070, brush.Color.ToUint32());
+ }
+
private IDisposable StyledWindow(params (string, string)[] assets)
{
var services = TestServices.StyledWindow.With(