В моем приложении 7 телефона Windows У меня есть однострочное текстовое поле. Когда пользователь нажимает {ENTER}, я хочу принять значение текстового поля и переключить текстовое поле обратно в обычный режим без редактирования.Есть ли способ программно отменить редактирование текстового поля?
В принципе, есть ли способ программно отменить редактирование текстового поля?
Я попытался заставить диспетчера визуальных состояний в нормальном режиме изменять визуальный стиль, но текстовое поле все еще находится в режиме редактирования, и экранная клавиатура все еще отображается.
VisualStateManager.GoToState(
this.MyTextBox,
"Normal",
true);
VisualStateManager.GoToState(
this.MyTextBox,
"Unfocused",
true);
Также попытался программно выбрать родительский элемент управления, но это тоже не работает.
Я думаю, что я, должно быть, пропустил что-то простое, кто-то, должно быть, сделал это миллион раз - любая помощь очень ценится.
Спасибо,
Update: Я попытался установить фокус на другой элемент управления, но это не работает, SIP клавиатура никогда не исчезнет.
Но я понял, используя другой метод. Фокус в том, чтобы использовать флаг IsReadOnly. Когда нажата потерянная фокусировка или ввод, я вернул элемент управления только для чтения, который обновляет стиль. Все, что мне нужно было сделать, это обновить мои визуальные stlyes, чтобы он выглядел правильно и теперь работает отлично.
Для чего это стоит, мой код выглядит примерно так:
private void MyTextBox_GotFocus(object sender, RoutedEventArgs e)
{
this.MyTextBox.IsReadOnly = false;
this.MyTextBox.SelectAll();
}
private void MyTextBox_LostFocus(object sender, RoutedEventArgs e)
{
this.MyTextBox.IsReadOnly = true;
}
private void MyTextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
this.MyTextBox.IsReadOnly = true;
VisualStateManager.GoToState(
this.MyTextBox,
"ReadOnly",
true);
VisualStateManager.GoToState(
this.MyTextBox,
"Unfocused",
true);
VisualStateManager.GoToState(
this.MyTextBox,
"Valid",
true);
}
}
Вместо включен я использовал «IsReadOnly» - но та же идея. Спасибо! – will