diff --git a/src/Avalonia.Base/Data/Core/UntypedBindingExpressionBase.cs b/src/Avalonia.Base/Data/Core/UntypedBindingExpressionBase.cs index fc0135b199..20686c3546 100644 --- a/src/Avalonia.Base/Data/Core/UntypedBindingExpressionBase.cs +++ b/src/Avalonia.Base/Data/Core/UntypedBindingExpressionBase.cs @@ -403,6 +403,9 @@ public abstract class UntypedBindingExpressionBase : BindingExpressionBase, /// The new binding or data validation error. private protected void PublishValue(object? value, BindingError? error = null) { + if (!IsRunning) + return; + // When binding to DataContext and the expression results in a binding error, the binding // expression should produce null rather than UnsetValue in order to not propagate // incorrect DataContexts from parent controls while things are being set up. diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs index 9379f94edd..05b77b5325 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs @@ -924,6 +924,42 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions window.Content = null; } + [Fact] + public void Handles_Clearing_Resources_With_Dynamic_Theme_In_Dynamic_Template() + { + // Issue #14753 + using var app = UnitTestApplication.Start(TestServices.StyledWindow); + var xaml = """ + + + Blue + + + + + + + + + + + +