2 using System.Collections.Generic;
4 namespace Tizen.NUI.Binding
6 internal static class ResourcesExtensions
8 public static IEnumerable<KeyValuePair<string, object>> GetMergedResources(this IElement element)
10 Dictionary<string, object> resources = null;
11 while (element != null)
13 var ve = element as IResourcesProvider;
14 if (ve != null && ve.IsResourcesCreated)
16 resources = resources ?? new Dictionary<string, object>();
17 foreach (KeyValuePair<string, object> res in ve.Resources.MergedResources)
18 if (!resources.ContainsKey(res.Key))
19 resources.Add(res.Key, res.Value);
20 else if (res.Key.StartsWith(Style.StyleClassPrefix, StringComparison.Ordinal))
22 var mergedClassStyles = new List<Style>(resources[res.Key] as List<Style>);
23 mergedClassStyles.AddRange(res.Value as List<Style>);
24 resources[res.Key] = mergedClassStyles;
27 var app = element as Application;
28 if (app != null && app.SystemResources != null)
30 resources = resources ?? new Dictionary<string, object>(8);
31 foreach (KeyValuePair<string, object> res in app.SystemResources)
32 if (!resources.ContainsKey(res.Key))
33 resources.Add(res.Key, res.Value);
34 else if (res.Key.StartsWith(Style.StyleClassPrefix, StringComparison.Ordinal))
36 var mergedClassStyles = new List<Style>(resources[res.Key] as List<Style>);
37 mergedClassStyles.AddRange(res.Value as List<Style>);
38 resources[res.Key] = mergedClassStyles;
41 element = element.Parent;
46 public static bool TryGetResource(this IElement element, string key, out object value)
48 while (element != null)
50 var ve = element as IResourcesProvider;
51 if (ve != null && ve.IsResourcesCreated && ve.Resources.TryGetValue(key, out value))
53 var app = element as Application;
54 if (app != null && app.SystemResources != null && app.SystemResources.TryGetValue(key, out value))
56 element = element.Parent;
59 //Fallback for the XF previewer
60 if (Application.Current != null && ((IResourcesProvider)Application.Current).IsResourcesCreated && Application.Current.Resources.TryGetValue(key, out value))