Привязка данных Windows Forms распознает интерфейс ICustomTypeDescriptor
, который позволяет объекту во время выполнения решать, какие свойства он представляет для привязки данных. Поэтому, если вы напишете реализацию этого, вы можете сообщить Windows Forms, что у вас есть любые свойства, которые вам нравятся, и вы можете решить, как их реализовать.
Конечно, это может не помочь - если вы хотите избежать добавления свойства, вы также можете избежать реализации довольно сложного интерфейса. Очевидным решением будет написать тип, работа которого заключается в том, чтобы выступать в качестве источника данных и связываться с ним, а не с любым объектом, с которым вы в данный момент связываетесь.
Конечно, если вы сделаете , то , вероятно, тогда будет проще реализовать любое свойство, которое вы собирались реализовать в этой оболочке.
В общем случае с привязкой данных вы хотите избегать привязки напрямую к какой-либо базовой модели именно потому, что вам не нужно добавлять какие-либо элементы в вашу модель исключительно в интересах пользовательского интерфейса. Вот почему «разделенная презентация» очень популярна - вместо того, чтобы соединять модель и представление напрямую, вы вставляете что-то посередине, чья работа заключается в посредничестве. Некоторые называют это моделью представления, некоторые называют это презентатором, но основной принцип - это всегда разделение представления.
Звучит так, будто вы пытаетесь добиться отдельного представления (что хорошо), но без введения дополнительного типа, так что этому среднему слою есть куда идти. Почему бы просто не определить класс (или набор классов), который будет действовать как этот слой?