[NUI] Introduce CollectionView and related classes. (#2525)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / Template / DataTemplateSelector.cs
1 using System;
2 using System.ComponentModel;
3 using System.Collections.Generic;
4
5 namespace Tizen.NUI.Binding
6 {
7     [EditorBrowsable(EditorBrowsableState.Never)]
8     public abstract class DataTemplateSelector : DataTemplate
9     {
10         Dictionary<Type, DataTemplate> _dataTemplates = new Dictionary<Type, DataTemplate>();
11
12         [EditorBrowsable(EditorBrowsableState.Never)]
13         public DataTemplate SelectTemplate(object item, BindableObject container)
14         {
15             DataTemplate dataTemplate = null;
16             if (_dataTemplates.TryGetValue(item.GetType(), out dataTemplate))
17             {
18                 return dataTemplate;
19             }
20
21             dataTemplate = OnSelectTemplate(item, container);
22             if (dataTemplate is DataTemplateSelector)
23                 throw new NotSupportedException(
24                     "DataTemplateSelector.OnSelectTemplate must not return another DataTemplateSelector");
25
26             return dataTemplate;
27         }
28
29         [EditorBrowsable(EditorBrowsableState.Never)]
30         protected abstract DataTemplate OnSelectTemplate(object item, BindableObject container);
31     }
32 }