Browse Source

Fixed ResolveByNameExtension

pull/3987/head
Nikita Tsukanov 6 years ago
parent
commit
6e998b2906
  1. 25
      src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResolveByNameExtension.cs

25
src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/ResolveByNameExtension.cs

@ -1,5 +1,6 @@
using System;
using Avalonia.Controls;
using Avalonia.Data.Core;
namespace Avalonia.Markup.Xaml.MarkupExtensions
{
@ -15,26 +16,20 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions
public object ProvideValue(IServiceProvider serviceProvider)
{
var namescope = serviceProvider.GetService<INameScope>();
var provideValueTarget = serviceProvider.GetService<IProvideValueTarget>();
var value = namescope.FindAsync(Name);
if(value.IsCompleted)
{
return value.GetResult();
}
else
{
value.OnCompleted(() =>
{
if(provideValueTarget is AvaloniaObject ao)
{
ao.SetValue(provideValueTarget.TargetProperty as AvaloniaProperty, value);
}
});
return null;
}
var provideValueTarget = serviceProvider.GetService<IProvideValueTarget>();
var target = provideValueTarget.TargetObject;
var property = provideValueTarget.TargetProperty as IPropertyInfo;
if (property != null)
value.OnCompleted(() => property.Set(target, value.GetResult()));
return null;
}
}
}

Loading…
Cancel
Save