|
|
@ -627,6 +627,137 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions |
|
|
Assert.Equal(0xff506070, brush.Color.ToUint32()); |
|
|
Assert.Equal(0xff506070, brush.Color.ToUint32()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[Fact] |
|
|
|
|
|
public void Resource_With_DynamicResource_Is_Updated_When_Added_To_Parent() |
|
|
|
|
|
{ |
|
|
|
|
|
var xaml = @"
|
|
|
|
|
|
<UserControl xmlns='https://github.com/avaloniaui'
|
|
|
|
|
|
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
|
|
|
|
|
|
<UserControl.Resources> |
|
|
|
|
|
<SolidColorBrush x:Key='brush' Color='{DynamicResource color}'/> |
|
|
|
|
|
</UserControl.Resources> |
|
|
|
|
|
|
|
|
|
|
|
<Border Name='border' Background='{DynamicResource brush}'/> |
|
|
|
|
|
</UserControl>";
|
|
|
|
|
|
|
|
|
|
|
|
var loader = new AvaloniaXamlLoader(); |
|
|
|
|
|
var userControl = (UserControl)loader.Load(xaml); |
|
|
|
|
|
var border = userControl.FindControl<Border>("border"); |
|
|
|
|
|
|
|
|
|
|
|
DelayedBinding.ApplyBindings(border); |
|
|
|
|
|
|
|
|
|
|
|
var brush = (SolidColorBrush)border.Background; |
|
|
|
|
|
Assert.Equal(0u, brush.Color.ToUint32()); |
|
|
|
|
|
|
|
|
|
|
|
brush.GetObservable(SolidColorBrush.ColorProperty).Subscribe(_ => { }); |
|
|
|
|
|
|
|
|
|
|
|
using (UnitTestApplication.Start(TestServices.StyledWindow)) |
|
|
|
|
|
{ |
|
|
|
|
|
var window = new Window |
|
|
|
|
|
{ |
|
|
|
|
|
Resources = |
|
|
|
|
|
{ |
|
|
|
|
|
{ "color", Colors.Red } |
|
|
|
|
|
}, |
|
|
|
|
|
Content = userControl, |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
window.Show(); |
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(Colors.Red, brush.Color); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[Fact] |
|
|
|
|
|
public void MergedDictionary_Resource_With_DynamicResource_Is_Updated_When_Added_To_Parent() |
|
|
|
|
|
{ |
|
|
|
|
|
var xaml = @"
|
|
|
|
|
|
<UserControl xmlns='https://github.com/avaloniaui'
|
|
|
|
|
|
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
|
|
|
|
|
|
<UserControl.Resources> |
|
|
|
|
|
<ResourceDictionary> |
|
|
|
|
|
<ResourceDictionary.MergedDictionaries> |
|
|
|
|
|
<ResourceDictionary> |
|
|
|
|
|
<SolidColorBrush x:Key='brush' Color='{DynamicResource color}'/> |
|
|
|
|
|
</ResourceDictionary> |
|
|
|
|
|
</ResourceDictionary.MergedDictionaries> |
|
|
|
|
|
</ResourceDictionary> |
|
|
|
|
|
</UserControl.Resources> |
|
|
|
|
|
|
|
|
|
|
|
<Border Name='border' Background='{DynamicResource brush}'/> |
|
|
|
|
|
</UserControl>";
|
|
|
|
|
|
|
|
|
|
|
|
var loader = new AvaloniaXamlLoader(); |
|
|
|
|
|
var userControl = (UserControl)loader.Load(xaml); |
|
|
|
|
|
var border = userControl.FindControl<Border>("border"); |
|
|
|
|
|
|
|
|
|
|
|
DelayedBinding.ApplyBindings(border); |
|
|
|
|
|
|
|
|
|
|
|
var brush = (SolidColorBrush)border.Background; |
|
|
|
|
|
Assert.Equal(0u, brush.Color.ToUint32()); |
|
|
|
|
|
|
|
|
|
|
|
brush.GetObservable(SolidColorBrush.ColorProperty).Subscribe(_ => { }); |
|
|
|
|
|
|
|
|
|
|
|
using (UnitTestApplication.Start(TestServices.StyledWindow)) |
|
|
|
|
|
{ |
|
|
|
|
|
var window = new Window |
|
|
|
|
|
{ |
|
|
|
|
|
Resources = |
|
|
|
|
|
{ |
|
|
|
|
|
{ "color", Colors.Red } |
|
|
|
|
|
}, |
|
|
|
|
|
Content = userControl, |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
window.Show(); |
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(Colors.Red, brush.Color); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[Fact] |
|
|
|
|
|
public void Style_Resource_With_DynamicResource_Is_Updated_When_Added_To_Parent() |
|
|
|
|
|
{ |
|
|
|
|
|
var xaml = @"
|
|
|
|
|
|
<UserControl xmlns='https://github.com/avaloniaui'
|
|
|
|
|
|
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
|
|
|
|
|
|
<UserControl.Styles> |
|
|
|
|
|
<Style> |
|
|
|
|
|
<Style.Resources> |
|
|
|
|
|
<SolidColorBrush x:Key='brush' Color='{DynamicResource color}'/> |
|
|
|
|
|
</Style.Resources> |
|
|
|
|
|
</Style> |
|
|
|
|
|
</UserControl.Styles> |
|
|
|
|
|
|
|
|
|
|
|
<Border Name='border' Background='{DynamicResource brush}'/> |
|
|
|
|
|
</UserControl>";
|
|
|
|
|
|
|
|
|
|
|
|
var loader = new AvaloniaXamlLoader(); |
|
|
|
|
|
var userControl = (UserControl)loader.Load(xaml); |
|
|
|
|
|
var border = userControl.FindControl<Border>("border"); |
|
|
|
|
|
|
|
|
|
|
|
DelayedBinding.ApplyBindings(border); |
|
|
|
|
|
|
|
|
|
|
|
var brush = (SolidColorBrush)border.Background; |
|
|
|
|
|
Assert.Equal(0u, brush.Color.ToUint32()); |
|
|
|
|
|
|
|
|
|
|
|
using (UnitTestApplication.Start(TestServices.StyledWindow)) |
|
|
|
|
|
{ |
|
|
|
|
|
var window = new Window |
|
|
|
|
|
{ |
|
|
|
|
|
Resources = |
|
|
|
|
|
{ |
|
|
|
|
|
{ "color", Colors.Red } |
|
|
|
|
|
}, |
|
|
|
|
|
Content = userControl, |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
window.Show(); |
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(Colors.Red, brush.Color); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
private IDisposable StyledWindow(params (string, string)[] assets) |
|
|
private IDisposable StyledWindow(params (string, string)[] assets) |
|
|
{ |
|
|
{ |
|
|
var services = TestServices.StyledWindow.With( |
|
|
var services = TestServices.StyledWindow.With( |
|
|
|