[NUI] Adjust directory (#903)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / Xaml / MarkupExtensions / DynamicResourceExtension.cs
1 using System;
2 using System.ComponentModel;
3 using Tizen.NUI.Binding;
4 using Tizen.NUI.Binding.Internals;
5
6 namespace Tizen.NUI.Xaml
7 {
8     /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
9     [EditorBrowsable(EditorBrowsableState.Never)]
10     [ContentProperty("Key")]
11     public sealed class DynamicResourceExtension : IMarkupExtension<DynamicResource>
12     {
13         /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
14         [EditorBrowsable(EditorBrowsableState.Never)]
15         public string Key { get; set; }
16
17         /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
18         [EditorBrowsable(EditorBrowsableState.Never)]
19         public object ProvideValue(IServiceProvider serviceProvider)
20         {
21             return ((IMarkupExtension<DynamicResource>)this).ProvideValue(serviceProvider);
22         }
23
24         DynamicResource IMarkupExtension<DynamicResource>.ProvideValue(IServiceProvider serviceProvider)
25         {
26             if (Key == null)
27             {
28                 var lineInfoProvider = serviceProvider.GetService(typeof (IXmlLineInfoProvider)) as IXmlLineInfoProvider;
29                 var lineInfo = (lineInfoProvider != null) ? lineInfoProvider.XmlLineInfo : new XmlLineInfo();
30                 throw new XamlParseException("DynamicResource markup require a Key", lineInfo);
31             }
32             return new DynamicResource(Key);
33         }
34     }
35 }