[NUI] TCSACR-226 code change (#1032)
[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             DataTemplate dataTemplate = null;
13             if (_dataTemplates.TryGetValue(item.GetType(), out dataTemplate))
14             {
15                 return dataTemplate;
16             }
17
18             dataTemplate = OnSelectTemplate(item, container);
19             if (dataTemplate is DataTemplateSelector)
20                 throw new NotSupportedException(
21                     "DataTemplateSelector.OnSelectTemplate must not return another DataTemplateSelector");
22
23             return dataTemplate;
24         }
25
26         protected abstract DataTemplate OnSelectTemplate(object item, BindableObject container);
27     }
28 }