static DemoPropertyTemplateSelector() { BuildInDataTemplates.Add(typeof(string), (DataTemplate)Application.Current.Resources["Demo.DataTemplates.String"]); BuildInDataTemplates.Add(typeof(bool), (DataTemplate)Application.Current.Resources["Demo.DataTemplates.Bool"]); BuildInDataTemplates.Add(typeof(bool?), (DataTemplate)Application.Current.Resources["Demo.DataTemplates.Bool.Nullable"]); BuildInDataTemplates.Add(typeof(Enum), (DataTemplate)Application.Current.Resources["Demo.DataTemplates.Enum"]); BuildInDataTemplates.Add(typeof(double), (DataTemplate)Application.Current.Resources["Demo.DataTemplates.Numeric"]); BuildInDataTemplates.Add(typeof(double?), (DataTemplate)Application.Current.Resources["Demo.DataTemplates.Numeric"]); BuildInDataTemplates.Add(typeof(int), (DataTemplate)Application.Current.Resources["Demo.DataTemplates.Numeric"]); BuildInDataTemplates.Add(typeof(int?), (DataTemplate)Application.Current.Resources["Demo.DataTemplates.Numeric"]); }
public override DataTemplate SelectTemplate(object item, DependencyObject container) { if (item is DemoProperty demoProperty) { if (demoProperty.Descriptor.PropertyType.IsEnum) { return(BuildInDataTemplates[typeof(Enum)]); } return(BuildInDataTemplates.TryGetValue(demoProperty.Descriptor.PropertyType, out DataTemplate result) ? result : BuildInDataTemplates[typeof(string)]); } else { return(FallbackTemplate); } }