всегда хорошо для разделения вида и модели; однако это не всегда можно сделать с помощью простого связывания данных простых типов.
Я бы посмотрел на что-то вроде пользовательского элемента управления, который может привязывать данные к списку пар {имя, значение, спецификация}, когда «спецификация» - это логический тип элемента управления, который нужно использовать.
Думая об этом; это похоже на то, что делает сетка свойств, если вы передаете ей пользовательскую коллекцию дескрипторов свойств….
У Devexpess есть «вертикальная сетка», которая может помочь, также посмотрите на сторонние сетки свойств.