Я реализовал пример на https://github.com/edymtt/usercontrolwithdatabinding, чтобы проиллюстрировать некоторые сценарии привязки данных, которые могут применяться к вашему вопросу. В частности, я рассмотрел два сценария:
- Реализация
UserControl
для редактирования основного свойства (строка, целое число, ...);
- Реализация
UserControl
для редактирования свойства сложного типа (такого как Address
POCO);
Реализация UserControl
для редактирования основного свойства
В этом случае достаточно раскрыть соответствующее свойство базового элемента управления (например, свойство Text
TextBox
) и вызвать соответствующее событие, когда это изменится (продолжая пример, обработать TextChanged
событие TextBox
и вызов нового события TextChanged
, см. на этой странице в MSDN в разделе «Уведомление об изменениях для пользовательских элементов управления».
ErrorProvider
в форме (где у вас есть источник привязки) может обрабатывать этот вид UserControl без проблем
Реализация UserControl
для редактирования свойства сложного типа
Этот случай не намного сложнее, чем предыдущий:
- вам нужно поставить
BindingSource
и Error Provider
в пользовательском контроле для обработки нужного вам POCO;
- затем вам нужно выставить свойство, чтобы получить связанный объект и назначить его во время выполнения.
Я надеюсь, что образец достаточно ясен, чтобы понять, как работает привязка.