diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs
index 7de60a1029..c751f9e056 100644
--- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs
+++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs
@@ -76,6 +76,68 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
+
+";
+
+ 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());
+ }
+
+ [Fact]
+ public void DynamicResource_From_MergedDictionary_Can_Be_Assigned_To_Property()
+ {
+ 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());
+ }
+
+ [Fact]
+ public void DynamicResource_From_MergedDictionary_In_Style_Can_Be_Assigned_To_Property()
+ {
+ var xaml = @"
+
+
+
+
+
";
@@ -399,6 +461,99 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
Assert.Equal(0xff506070, brush.Color.ToUint32());
}
+ [Fact]
+ public void DynamicResource_Tracks_Added_MergedResource()
+ {
+ var xaml = @"
+
+
+
+
+
+
+
+
+
+";
+
+ var loader = new AvaloniaXamlLoader();
+ var userControl = (UserControl)loader.Load(xaml);
+ var border = userControl.FindControl("border");
+
+ DelayedBinding.ApplyBindings(border);
+
+ Assert.Null(border.Background);
+
+ userControl.Resources.MergedDictionaries[0].Add("brush", new SolidColorBrush(0xff506070));
+
+ var brush = (SolidColorBrush)border.Background;
+ Assert.NotNull(brush);
+ Assert.Equal(0xff506070, brush.Color.ToUint32());
+ }
+
+ [Fact]
+ public void DynamicResource_Tracks_Added_MergedResource_Dictionary()
+ {
+ var xaml = @"
+
+
+";
+
+ var loader = new AvaloniaXamlLoader();
+ var userControl = (UserControl)loader.Load(xaml);
+ var border = userControl.FindControl("border");
+
+ DelayedBinding.ApplyBindings(border);
+
+ Assert.Null(border.Background);
+
+ var dictionary = new ResourceDictionary
+ {
+ { "brush", new SolidColorBrush(0xff506070) },
+ };
+
+ userControl.Resources.MergedDictionaries.Add(dictionary);
+
+ var brush = (SolidColorBrush)border.Background;
+ Assert.NotNull(brush);
+ Assert.Equal(0xff506070, brush.Color.ToUint32());
+ }
+
+ [Fact]
+ public void DynamicResource_Tracks_Added_Style_MergedResource_Dictionary()
+ {
+ var xaml = @"
+
+
+
+
+
+";
+
+ var loader = new AvaloniaXamlLoader();
+ var userControl = (UserControl)loader.Load(xaml);
+ var border = userControl.FindControl("border");
+
+ DelayedBinding.ApplyBindings(border);
+
+ Assert.Null(border.Background);
+
+ var dictionary = new ResourceDictionary
+ {
+ { "brush", new SolidColorBrush(0xff506070) },
+ };
+
+ ((Style)userControl.Styles[0]).Resources.MergedDictionaries.Add(dictionary);
+
+ var brush = (SolidColorBrush)border.Background;
+ Assert.NotNull(brush);
+ Assert.Equal(0xff506070, brush.Color.ToUint32());
+ }
+
[Fact]
public void DynamicResource_Can_Be_Found_Across_Xaml_Style_Files()
{