Самый лучший способ достичь того, что вы хотите сделать, - это, вероятно, создать класс, представляющий код, который предоставляет цифры через свойства, связанные с текстовыми полями (или как строку через одно свойство, а затем использует ValueConverter для обновления соответствующие цифры) и реализует интерфейс INotifyPropertyChanged (генерируя событие PropertyChanged каждый раз, когда задаются свойство / свойства. Затем можно создать обработчик, который прослушивает события PropertyChanged из объекта кода, проверяет, что все цифры заполнены, и, если поэтому загружает данные из XML, или же вы можете выполнить эту проверку внутри объекта и вызвать другое событие, чтобы приложение знало, что введен полный код.
Что касается перехода к следующему текстовому полю, вы можете создать обработчик событий TextChanged, который вызывает метод UIElement.MoveFocus () и зарегистрировать его во всех текстовых полях, например:
private void textChanged(object sender, TextChangedEventArgs e)
{
TextBox textBox = sender as TextBox;
if (textBox != null && textBox.Text.Length == 1)
{
TraversalRequest tr = new TraversalRequest(FocusNavigationDirection.Next);
textBox.MoveFocus(tr);
}
}
Вы также можете установить для MaxLength каждого текстового поля значение 1, чтобы предотвратить копирование и вставку текста и т. Д., А также можно посмотреть на такие вещи, как ValidationRules, для проверки на недопустимые символы и т. Д.
Надеюсь, это поможет (просто спросите, нужна ли вам помощь в этом).
С уважением,
Джеймс