a883738af17219a90f021353d5823d4d6b7fae38
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI.XamlBuild / src / internal / Xaml / MarkupExtensions / DynamicResourceExtension.cs
1 using System;
2 using Tizen.NUI.Binding;
3 using Tizen.NUI.Binding.Internals;
4 using Tizen.NUI.EXaml;
5
6 namespace Tizen.NUI.Xaml
7 {
8     [ContentProperty("Key")]
9     internal sealed class DynamicResourceExtension : IMarkupExtension<DynamicResource>
10     {
11         public string Key { get; set; }
12
13         public object ProvideValue()
14         {
15             if (null == Key)
16             {
17                 return null;
18             }
19             else
20             {
21                 return new DynamicResource(Key);
22             }
23         }
24
25         public object ProvideValue(IServiceProvider serviceProvider)
26         {
27             return ((IMarkupExtension<DynamicResource>)this).ProvideValue(serviceProvider);
28         }
29
30         DynamicResource IMarkupExtension<DynamicResource>.ProvideValue(IServiceProvider serviceProvider)
31         {
32             if (Key == null)
33             {
34                 var lineInfoProvider = serviceProvider.GetService(typeof (IXmlLineInfoProvider)) as IXmlLineInfoProvider;
35                 var lineInfo = (lineInfoProvider != null) ? lineInfoProvider.XmlLineInfo : new XmlLineInfo();
36                 throw new XamlParseException("DynamicResource markup require a Key", lineInfo);
37             }
38             return new DynamicResource(Key);
39         }
40     }
41 }