Add ScriptUI to support XAML file (#320)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / internal / XamlBinding / DataTemplateSelector.cs
1 using System;
2 using System.Collections.Generic;
3
4 namespace Tizen.NUI.Binding
5 {
6     internal abstract class DataTemplateSelector : DataTemplate
7     {
8         Dictionary<Type, DataTemplate> _dataTemplates = new Dictionary<Type, DataTemplate>();
9
10         public DataTemplate SelectTemplate(object item, BindableObject container)
11         {
12             // var listView = container as ListView;
13
14             // var recycle = listView == null ? false :
15             //  (listView.CachingStrategy & ListViewCachingStrategy.RecycleElementAndDataTemplate) ==
16             //          ListViewCachingStrategy.RecycleElementAndDataTemplate;
17
18             DataTemplate dataTemplate = null;
19             // if (recycle && _dataTemplates.TryGetValue(item.GetType(), out dataTemplate))
20                 // return dataTemplate;
21
22             dataTemplate = OnSelectTemplate(item, container);
23             if (dataTemplate is DataTemplateSelector)
24                 throw new NotSupportedException(
25                     "DataTemplateSelector.OnSelectTemplate must not return another DataTemplateSelector");
26
27             // if (recycle)
28             // {
29             //  if (!dataTemplate.CanRecycle)
30             //          throw new NotSupportedException(
31             //                  "RecycleElementAndDataTemplate requires DataTemplate activated with ctor taking a type.");
32
33             //  _dataTemplates[item.GetType()] = dataTemplate;
34             // }
35
36             return dataTemplate;
37         }
38
39         protected abstract DataTemplate OnSelectTemplate(object item, BindableObject container);
40     }
41 }