Ошибка текстового поля планшетного ПК/WPF – какие-нибудь обходные пути?
Вопрос
Я только что зарегистрировал это с помощью Microsoft Connect, но мне интересно, сталкивался ли кто-нибудь еще с этим и нашел ли решение.Гугл мало чего показывает...
Простое воспроизведение:
- Приложение имеет текстовое поле WPF с установленным MaxLength.
- Используйте панель ввода планшетного ПК, чтобы написать больше текста, чем разрешено.
- Нажимаем «вставить» на панели планшетного ПК и приложение вылетает.
Помимо изменения поведения моего приложения, чтобы он не использовал MaxLength, знает ли кто-нибудь решение?
(Я напишу здесь, если Microsoft вернется с каким-либо советом.)
РЕДАКТИРОВАТЬ: Надо было указать, что я использую .NET 3.5 и Windows 7.
Решение 3
Судя по всему, это исправлено в .NET 4.0, но исправление в 3.5 не планируется.MS предложила обработать событие TextChanged для автоматического предоставления MaxLength (фу!).
Другие советы
В зависимости от архитектуры вашего приложения, если вы используете MVVM, я могу удалить MaxLength, а затем выполнить проверку в вашем объекте ViewModel, чтобы убедиться, что значение соответствует ожидаемой длине.
В противном случае я мог бы использовать проверку привязки, как это описано в этой статье.
Это не то, что я бы назвал оптимальным в случае чего-то действительно ограниченного по длине, например почтового индекса или номера телефона, но это позволяет вам объединить все проверки в одном месте.
Честно говоря, у меня нет опыта взаимодействия ни с WPF, ни с планшетным ПК, поэтому я стреляю вслепую, но я либо попаду в цель, либо чему-нибудь научусь :)
С моей упрощенной точки зрения я вижу несколько обходных путей, каждый из которых включает удаление максимальной длины:
- При отправке обрежьте строку в виртуальной машине, если она слишком длинная.
- При отправке предупреждать пользователя об усечении и возвращать ему усеченную строку в текстовом поле для редактирования.
- Поместите событие в текстовое поле и усеките строку «OnChange» с предупреждением о метке рядом с полем, например, об ошибке веб-формы.
В любом случае, я надеюсь, что вы получите ответы от людей, которые знают, о чем говорят ;)