Только от верхней части моей головы, я бы поспорил против делать это по двум причинам:
1) Конструкция запахов 2) затемняет то, что на самом деле происходит
Для # 1, я говорю это потому что для обработки события привязки данных он должен уже начать связываться с чем-то уже. Чтобы изменить то, что он связывает в середине потока, не то, что я бы назвал идеальным дизайном.
Это приводит к # 2, в том случае, если кто-то создает один из ваших элементов управления и вызывает на нем .DataBind(), и он внутренне начинает привязываться к чему-то еще, совершенно непонятно вызывающему, что происходит.
Хотя я не смотрел на это с технической точки зрения, мне кажется, что вы бы подняли возможность рекурсивного бесконечного цикла привязки данных. Думаю, мне действительно нужно увидеть какой-то код, чтобы узнать, приемлемо ли то, что вы делаете, или если есть лучшие способы сделать это.
Я понял, что вы подразумеваете под № 1. Для # 2 ... Я не делаю этого для своих UserControls, но для обычных ASP.NET WebControls у меня есть на моих страницах. Для моего UserControls я бы создал новое событие «NeedDataSource» (например, элементы управления Telerik), которые будут повышаться, если DataSource имеет значение null при вызове DataBind. –