В моем Приложении для Windows Phone 7 у меня есть однострочное текстовое поле. Когда пользователь нажимает {ENTER}, я хочу признать, что текстовое поле оценивает и переключает текстовое поле назад в нормальный нережим редактирования.
В основном существует ли способ программно отменить редактирование текстового поля?
Я попробовал, вызывают режим Visual State Manager into Normal, который действительно изменяет визуальный стиль, но текстовое поле находится все еще в режиме редактирования, и экранная клавиатура все еще показывает.
VisualStateManager.GoToState(
this.MyTextBox,
"Normal",
true);
VisualStateManager.GoToState(
this.MyTextBox,
"Unfocused",
true);
Также попробованный, чтобы программно выбрать родительское управление, но это, кажется, не работает также.
Я думаю, что должен пропускать что-то простое, кто-то, должно быть, сделал это миллион раз - любая справка, очень ценившая.
Спасибо,
Обновление: Я пытался установить фокус на другое Управление, но это не работало, клавиатура SIP никогда не будет исчезать.
Но я изобразил его использующий другой метод. Прием должен был использовать флаг IsReadOnly. То, когда потерянный фокус или входит, было нажато, я задержал управление к только для чтения, который обновляет стиль. Все, что я должен был сделать, было обновить мои визуальные стили, таким образом, это выглядело правильным и теперь работает отлично.
Если это имеет значение мой код теперь выглядит примерно так:
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);
}
}