using Avalonia.Controls; using Avalonia.Controls.Templates; using Avalonia.Markup.Xaml.Templates; using AI.Models.Form; namespace AI.Converters { /// /// 按表单字段类型选择模板,避免 Boolean 的 CheckBox 与 Choice 的 ComboBox 同屏时互相覆盖 CurrentValue(如列名 "0" 被写成 "False")。 /// public class FormFieldTemplateSelector : IDataTemplate { public DataTemplate? BooleanTemplate { get; set; } public DataTemplate? ChoiceTemplate { get; set; } public DataTemplate? DefaultTemplate { get; set; } public Control? Build(object? param) { if (param is not FormFieldEntry entry) { return null; } var template = entry.Type switch { FormFieldType.Boolean => BooleanTemplate, FormFieldType.Choice => ChoiceTemplate, _ => DefaultTemplate, }; return template?.Build(param); } public bool Match(object? data) => data is FormFieldEntry; } }