public override DataTemplate SelectTemplate(object item, DependencyObject container) { if (!(container is UIElement)) { return(base.SelectTemplate(item, container)); } DataTemplateHolderCollection templates = GetTemplates(container as UIElement); if (templates == null || templates.Count == 0) { base.SelectTemplate(item, container); } foreach (DataTemplateHolder template in templates) { if (template.Value.IsInstanceOfType(item)) { return(template.DataTemplate); } } return(base.SelectTemplate(item, container)); }
public static void SetTemplates(UIElement element, DataTemplateHolderCollection collection) { element.SetValue(TemplatesProperty, collection); }