@ -10,6 +10,7 @@ using Avalonia.Styling;
using Avalonia.UnitTests ;
using Avalonia.VisualTree ;
using Xunit ;
using Avalonia.Media ;
namespace Avalonia.Controls.UnitTests.Primitives
{
@ -512,6 +513,68 @@ namespace Avalonia.Controls.UnitTests.Primitives
}
}
[Fact]
public void Templated_Child_Should_Find_Resource_In_TemplatedParent ( )
{
var target = new ContentControl
{
Resources =
{
{ "red" , Brushes . Red } ,
} ,
Template = new FuncControlTemplate < ContentControl > ( ( x , scope ) = >
{
var result = new ContentPresenter
{
Name = "PART_ContentPresenter" ,
[!ContentPresenter.ContentProperty] = x [ ! ContentControl . ContentProperty ] ,
} . RegisterInNameScope ( scope ) ;
result . Bind ( ContentPresenter . BackgroundProperty , result . GetResourceObservable ( "red" ) ) ;
return result ;
} ) ,
} ;
target . ApplyTemplate ( ) ;
var contentPresenter = Assert . IsType < ContentPresenter > ( target . GetVisualChildren ( ) . Single ( ) ) ;
Assert . Same ( Brushes . Red , contentPresenter . Background ) ;
}
[Fact]
public void Changing_Resource_In_Templated_Parent_Should_Affect_Templated_Child ( )
{
var target = new ContentControl
{
Resources =
{
{ "red" , Brushes . Red } ,
} ,
Template = new FuncControlTemplate < ContentControl > ( ( x , scope ) = >
{
var result = new ContentPresenter
{
Name = "PART_ContentPresenter" ,
[!ContentPresenter.ContentProperty] = x [ ! ContentControl . ContentProperty ] ,
} . RegisterInNameScope ( scope ) ;
result . Bind ( ContentPresenter . BackgroundProperty , result . GetResourceObservable ( "red" ) ) ;
return result ;
} ) ,
} ;
target . ApplyTemplate ( ) ;
var contentPresenter = Assert . IsType < ContentPresenter > ( target . GetVisualChildren ( ) . Single ( ) ) ;
Assert . Same ( Brushes . Red , contentPresenter . Background ) ;
target . Resources [ "red" ] = Brushes . Green ;
Assert . Same ( Brushes . Green , contentPresenter . Background ) ;
}
private static IControl ScrollingContentControlTemplate ( ContentControl control , INameScope scope )
{
return new Border