Я разрабатываю приложение WPF для клиента. Приложение должно предложить пользователю в начале производственного цикла заполнить несколько полей. Данные, которые пользователю предлагается ввести, зависят от типа продукта, связанного с производственным прогоном. Так, например, для продукта А может потребоваться, чтобы пользователь ввел номер срока годности, номер партии, а для продукта В может потребоваться, чтобы пользователь вводил только дату изготовления.
Мне нужно будет динамически создать пользовательский интерфейс и отобразить имя поля, элемент управления вводом (текстовое поле, список, флажок и т. Д.).
Система должна быть гибкой, и должен быть создан механизм, позволяющий пользователю «создавать» динамический макет пользовательского интерфейса.
Я смотрю на различные варианты, такие как:
XML, чтобы объявить структуру пользовательского интерфейса, которую хотел бы пользователь. Затем приложение обрабатывает XML и создает соответствующие элементы управления пользовательским интерфейсом для различных элементов XML
Пользовательский DSL, который позволит пользователю ввести что-то вроде:
"создать текстовое поле для поля LOT NUMBER"
Как и в случае подхода xml, приложение сохранит вышеприведенное и назначит его продукту и сохранит в БД. Во время запуска рабочего процесса приложение динамически создает пользовательский интерфейс.
Изначально пользователь будет редактировать эти файлы вручную и назначать их продукту. В конечном итоге мы планируем создать графический интерфейс для разработки пользовательского интерфейса с поддержкой перетаскивания.
У меня нет большого опыта работы с DSL. Просто интересно, подходит ли вышеуказанное приложение для DSL, или мне следует использовать совершенно другой подход.