Вопрос:
Есть ли в Silverlight хороший способ перехватывать нежелательные символы, вводимые в текстовое поле?
Справочная информация:
У меня есть текстовое поле, которое позволяет пользователю вводить имя файла. Я хотел бы исключить недопустимые символы файла от ввода в текстовое поле. Вот некоторые из этих персонажей:
Хотя класс Silverlight TextBox не поддерживает событие KeyPress, у него есть событие KeyDown и KeyUp, которое можно использовать для получения информации о символах при вводе ключа в текстовое поле. Он выставляет их как член перечисления Key или может возвращать int для PlatformKeyCode .
Конечно, диапазон клавиш больше / отличается от диапазона символов - например, «F keys». Однако наличие чего-то вроде события KeyPress в Windows Forms свидетельствует о полезности возможности извлечения информации о конкретных символах.
Чтобы доказать, что все работает, я жестко закодировал значения PlatformKeyCode для нежелательных символов для моей платформы в обработчик событий, и все заработало ... но конечно это просто моя платформа. Мне нужно убедиться, что эта реализация не зависит от платформы. Вот код, демонстрирующий, как я бы хотел, чтобы он работал:
private void theText_KeyDown(object sender, KeyEventArgs e)
{
int[] illegals = { 191, 188, 190, 220, 186, 222, 191, 56, 186};
if (illegals.Any(i => i == e.PlatformKeyCode)) e.Handled = true;
}