示例#1
0
        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);
        }