1a3626fd15d9afc8dc59aab3382579f57ddee415
[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 }