Лучшая практика для привязки данных пользовательского контроля - Как этого добиться? - PullRequest
3 голосов
/ 28 июля 2010

У меня есть пользовательский элемент управления с текстовыми полями, метками, .... Теперь я хотел бы получить те же функции привязки данных, как и элементы управления непосредственно в форме. Я попытался использовать дополнительный источник привязки и поставщика ошибок в пользовательском элементе управления и попытался сделать свойства своих элементов управления доступными в качестве свойства.

Ничего не работает. Таким образом, должно быть решение, чтобы сделать это. Так как же?

1 Ответ

1 голос
/ 02 мая 2013

Я реализовал пример на https://github.com/edymtt/usercontrolwithdatabinding, чтобы проиллюстрировать некоторые сценарии привязки данных, которые могут применяться к вашему вопросу. В частности, я рассмотрел два сценария:

  1. Реализация UserControl для редактирования основного свойства (строка, целое число, ...);
  2. Реализация UserControl для редактирования свойства сложного типа (такого как Address POCO);

Реализация UserControl для редактирования основного свойства

В этом случае достаточно раскрыть соответствующее свойство базового элемента управления (например, свойство Text TextBox) и вызвать соответствующее событие, когда это изменится (продолжая пример, обработать TextChanged событие TextBox и вызов нового события TextChanged, см. на этой странице в MSDN в разделе «Уведомление об изменениях для пользовательских элементов управления».

ErrorProvider в форме (где у вас есть источник привязки) может обрабатывать этот вид UserControl без проблем

Реализация UserControl для редактирования свойства сложного типа

Этот случай не намного сложнее, чем предыдущий:

  • вам нужно поставить BindingSource и Error Provider в пользовательском контроле для обработки нужного вам POCO;
  • затем вам нужно выставить свойство, чтобы получить связанный объект и назначить его во время выполнения.

Я надеюсь, что образец достаточно ясен, чтобы понять, как работает привязка.

...