diff --git a/src/Markup/Avalonia.Markup.Xaml/Data/DynamicResourceExpression.cs b/src/Markup/Avalonia.Markup.Xaml/Data/DynamicResourceExpression.cs
index 26c3e30f86..438c140395 100644
--- a/src/Markup/Avalonia.Markup.Xaml/Data/DynamicResourceExpression.cs
+++ b/src/Markup/Avalonia.Markup.Xaml/Data/DynamicResourceExpression.cs
@@ -86,6 +86,9 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions
private void ActualThemeVariantChanged(object? sender, EventArgs e)
{
+ if (!IsRunning)
+ return;
+
_themeVariant = ((IThemeVariantHost)sender!).ActualThemeVariant;
PublishValue();
}
diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs
index 523b31e60a..9379f94edd 100644
--- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs
+++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs
@@ -896,6 +896,34 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
Assert.DoesNotContain("foo", resourceProvider.RequestedResources);
}
+ [Fact]
+ public void Can_Detach_Control_With_DynamicResource_ControlTheme_That_Contains_DynamicResource()
+ {
+ using var app = UnitTestApplication.Start(TestServices.StyledWindow);
+ var xaml = $@"
+
+
+ Blue
+
+
+
+
+
+
+";
+
+ var window = (Window)AvaloniaRuntimeXamlLoader.Load(xaml);
+ var target = Assert.IsType