using System; using System.Windows; using System.Windows.Controls; namespace Controls { /// /// Selects the right template on base of value-type. /// public class PropertyDataTemplateSelector : DataTemplateSelector { /// /// Default data template. (currently Textbox) /// public DataTemplate? DefaultDataTemplate { private get; set; } /// /// Data template for boolean. (currently Checkbox) /// public DataTemplate? BooleanDataTemplate { private get; set; } /// /// Data template for enums. (currently Combobox) /// public DataTemplate? EnumComboBoxDataTemplate { private get; set; } /// public override DataTemplate? SelectTemplate(object item, DependencyObject container) { return item switch { bool _ => BooleanDataTemplate, Enum _ => EnumComboBoxDataTemplate, UIElement _ => null, _ => DefaultDataTemplate }; } } }