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 + + + + + +