Что лучший способ состоит в том, чтобы предотвратить проигрывающий фокус TextBox, когда существует ошибка проверки?

Я бездельничал с PreviewLostKeyboardFocus который почти получает Вас там. Я видел, что несколько реализаций используют LostFocus, но это просто сдерживает внимание на TextBox после того, как это потеряло фокус, и можно легко видеть это смещение на экране. В основном я просто ищу тот же тип поведения, которое Вы могли получить с использованием OnValidating в WinForms.

5
задан Dave Clemmer 18 September 2011 в 03:44
поделиться

1 ответ

На мой взгляд, лучший способ, как правило, не делать этого. Почти всегда лучше просто отключить другие элементы управления или предотвращать сохранение до тех пор, пока значение не будет действительным.

Но если ваш дизайн действительно нуждается в этой способности, вот что вы должны сделать:

  1. Перехватить Предварительный просмотр версия клавиатуры и события мыши на уровне окна, или любой объем, который вы хотите предотвратить фокус Изменения внутри (например,, возможно, не ваша строка меню).

  2. Когда в текстовом поле обнаружена вкладка или возвращаемый ключ, или когда Mousedown обнаруживается за пределами текстового поля, пока он имеет фокус, вызовите обновления () в выражении привязки, то если проверка не удалась = TRUE, чтобы предотвратить обработку события класса или Mousedown или Mousedown.

  3. также продолжайте обработку PreviewLostkeyboardFocus , чтобы уловить любые причины изменения фокусировки, не от клавиатуры или мыши, или что ваш другой код не распознал.

5
ответ дан 14 December 2019 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: