private HashSet <DataTemplate> RegisterCellDataTemplates(DataTemplateSelector dataTemplateSelector) { HashSet <DataTemplate> dataTemplates = new HashSet <DataTemplate>(); foreach (var item in _itemsSource) { var dataTemplate = dataTemplateSelector.SelectTemplate(item, Element); int itemViewType = dataTemplates.IndexOf(dataTemplate); if (itemViewType == -1) { itemViewType = dataTemplates.Count; dataTemplates.Add(dataTemplate); } } for (int i = 0; i < dataTemplates.Count; i++) { Control.RegisterClassForCell(typeof(iOSViewCell), IdentifierFormatter.FormatDataTemplateCellIdentifier(i)); } return(dataTemplates); }
private List <DataTemplate> RegisterCellDataTemplates(DataTemplateSelector dataTemplateSelector) { var selectorTypeInfo = dataTemplateSelector.GetType().GetTypeInfo(); var selectorDataTemplatesProperties = selectorTypeInfo .GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly) .Where(p => typeof(DataTemplate).IsAssignableFrom(p.PropertyType)); foreach (var selectorDataTemplateProperty in selectorDataTemplatesProperties) { var dataTemplate = (DataTemplate)selectorDataTemplateProperty.GetValue(dataTemplateSelector); if (!_registeredDataTemplates.Contains(dataTemplate)) { _registeredDataTemplates.Add(dataTemplate); Control.RegisterClassForCell( typeof(iOSViewCell), IdentifierFormatter.FormatDataTemplateCellIdentifier(_registeredDataTemplates.Count - 1)); } } return(_registeredDataTemplates); }