Я думаю, что курсоры получают дурную славу, потому что новички SQL обнаруживают их и думают "Эй для цикла! Я знаю, как использовать тех!" и затем они продолжают использовать их для всего.
, Если Вы используете их для того, для чего они разработаны, я не могу придираться к этому.
Я не уверен, что есть способ, кроме как просто пройтись по визуальному дереву (используя VisualTreeHelper). Как насчет чего-нибудь вроде (mygGidControl1.DataSource as ICollection) .Count?