[NUI] Add LoadFromXamlFile() (#892)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / XamlBinding / NameScopeExtensions.cs
1 using System.Collections.Generic;
2 using System.ComponentModel;
3 using Tizen.NUI.Binding.Internals;
4
5 namespace Tizen.NUI.Binding
6 {
7     /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
8     [EditorBrowsable(EditorBrowsableState.Never)]
9     public static class NameScopeExtensions
10     {
11         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
12         [EditorBrowsable(EditorBrowsableState.Never)]
13         public static T FindByName<T>(this Element element, string name)
14         {
15             return ((INameScope)element).FindByName<T>(name);
16         }
17
18         internal static T FindByName<T>(this INameScope namescope, string name)
19         {
20             return (T)namescope?.FindByName(name);
21         }
22
23         private static Stack<Element> elementStack = new Stack<Element>();
24
25         internal static void PushElement(object element)
26         {
27             elementStack.Push((Element)element);
28         }
29
30         internal static void PopElement()
31         {
32             elementStack.Pop();
33         }
34
35         /// <summary>
36         /// Used to find the object defined in Xaml file.
37         /// </summary>
38         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
39         [EditorBrowsable(EditorBrowsableState.Never)]
40         public static T FindByNameInCurrentNameScope<T>(string name)
41         {
42             return FindByName<T>(elementStack.Peek(), name);
43         }
44     }
45 }