@ -10,8 +10,7 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions
{
public class DynamicResourceExtension : IBinding
{
private IStyledElement ? _ anchor ;
private IResourceProvider ? _ resourceProvider ;
private object? _ anchor ;
public DynamicResourceExtension ( )
{
@ -30,12 +29,9 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions
if ( ! ( provideTarget . TargetObject is IStyledElement ) )
{
_ anchor = serviceProvider . GetFirstParent < IStyledElement > ( ) ;
if ( _ anchor is null )
{
_ resourceProvider = serviceProvider . GetFirstParent < IResourceProvider > ( ) ;
}
_ anchor = serviceProvider . GetFirstParent < IStyledElement > ( ) ? ?
serviceProvider . GetFirstParent < IResourceProvider > ( ) ? ?
( object? ) serviceProvider . GetFirstParent < IResourceHost > ( ) ;
}
return this ;
@ -52,16 +48,16 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions
return null ;
}
var control = target as IStyledElemen t ? ? _ anchor as IStyledElemen t ;
var control = target as IResourceHos t ? ? _ anchor as IResourceHos t ;
if ( control ! = null )
{
var source = control . GetResourceObservable ( ResourceKey , GetConverter ( targetProperty ) ) ;
return InstancedBinding . OneWay ( source ) ;
}
else if ( _ resourceProvider is object )
else if ( _ anchor is IResourceProvider resourceProvider )
{
var source = _ resourceProvider . GetResourceObservable ( ResourceKey , GetConverter ( targetProperty ) ) ;
var source = resourceProvider . GetResourceObservable ( ResourceKey , GetConverter ( targetProperty ) ) ;
return InstancedBinding . OneWay ( source ) ;
}