2 using Tizen.NUI.Internals;
3 using Tizen.NUI.Xaml.Internals;
4 using Tizen.NUI.Binding;
6 namespace Tizen.NUI.Xaml
8 [ContentProperty("Name")]
9 internal class ReferenceExtension : IMarkupExtension
11 public string Name { get; set; }
13 public object ProvideValue(IServiceProvider serviceProvider)
15 if (serviceProvider == null)
16 throw new ArgumentNullException(nameof(serviceProvider));
17 var valueProvider = serviceProvider.GetService(typeof (IProvideValueTarget)) as IProvideParentValues;
18 if (valueProvider == null)
19 throw new ArgumentException("serviceProvider does not provide an IProvideValueTarget");
20 var namescopeprovider = serviceProvider.GetService(typeof (INameScopeProvider)) as INameScopeProvider;
21 if (namescopeprovider != null && namescopeprovider.NameScope != null)
23 var value = namescopeprovider.NameScope.FindByName(Name);
28 foreach (var target in valueProvider.ParentObjects)
30 var ns = target as INameScope;
33 var value = ns.FindByName(Name);
38 var lineInfo = (serviceProvider?.GetService(typeof(IXmlLineInfoProvider)) as IXmlLineInfoProvider)?.XmlLineInfo ?? new XmlLineInfo();
39 throw new XamlParseException($"Can not find the object referenced by `{Name}`", lineInfo);