private DataTemplate SelectTemplateFromValue(Object value) { if (value is String) return StringDataTemplate; //IntRangeDataTemplate.Resources.Values. IntRangeDataTemplate.Resources.OfType<RangeValueConverter>().SingleOrDefault(); if (value is double || value is float) return DoubleRangeDataTemplate; if (value is bool) return BoolDataTemplate; if (value is System.Windows.Media.FontFamily) return FontTemplate; if (value != null) { Type valueType = value.GetType(); DataTemplate dt = SelectTemplateFromType(valueType); if (dt != null) return dt; if (value.IsIntegerType()) return IntRangeDataTemplate; } return null; }