Если вы ищете обобщенное решение и все в порядке, основываясь на визуальном упорядочении дерева (в отличие от упорядоченного макета), я думаю, что это не так уж плохо. Тем не менее, не слышал о том, что это делается.
Большинство телефонных номеров или форм ввода кредитных карт, с которыми я сталкивался при таком поведении, честно просто жестко кодируют следующее поле в соответствующем обработчике изменений, когда введено правильное количество символов.
Поскольку звучит так, как будто ваше решение с автофокусировкой (для 3 символов) уже потребует некоторого подключения к событию, отслеживая событие TextChanged, не могли бы вы просто продолжить и 1) жестко закодировать Фокус ( ) к следующему известному элементу формы, 2) используйте свойство Tag, чтобы сохранить имя элемента управления, на который вы хотели бы сфокусироваться следующим образом, затем выполните FindName + Focus для этого, или 3) выполните какое-то VisualTreeHelper ( или логическое дерево поиска через пиров)?