Ошибка текстового поля планшетного ПК/WPF – какие-нибудь обходные пути?

StackOverflow https://stackoverflow.com/questions/2426495

  •  19-09-2019
  •  | 
  •  

Вопрос

Я только что зарегистрировал это с помощью Microsoft Connect, но мне интересно, сталкивался ли кто-нибудь еще с этим и нашел ли решение.Гугл мало чего показывает...

Простое воспроизведение:

  • Приложение имеет текстовое поле WPF с установленным MaxLength.
  • Используйте панель ввода планшетного ПК, чтобы написать больше текста, чем разрешено.
  • Нажимаем «вставить» на панели планшетного ПК и приложение вылетает.

Помимо изменения поведения моего приложения, чтобы он не использовал MaxLength, знает ли кто-нибудь решение?

(Я напишу здесь, если Microsoft вернется с каким-либо советом.)

РЕДАКТИРОВАТЬ: Надо было указать, что я использую .NET 3.5 и Windows 7.

Это было полезно?

Решение 3

Судя по всему, это исправлено в .NET 4.0, но исправление в 3.5 не планируется.MS предложила обработать событие TextChanged для автоматического предоставления MaxLength (фу!).

Другие советы

В зависимости от архитектуры вашего приложения, если вы используете MVVM, я могу удалить MaxLength, а затем выполнить проверку в вашем объекте ViewModel, чтобы убедиться, что значение соответствует ожидаемой длине.

В противном случае я мог бы использовать проверку привязки, как это описано в этой статье.

Это не то, что я бы назвал оптимальным в случае чего-то действительно ограниченного по длине, например почтового индекса или номера телефона, но это позволяет вам объединить все проверки в одном месте.

Честно говоря, у меня нет опыта взаимодействия ни с WPF, ни с планшетным ПК, поэтому я стреляю вслепую, но я либо попаду в цель, либо чему-нибудь научусь :)

С моей упрощенной точки зрения я вижу несколько обходных путей, каждый из которых включает удаление максимальной длины:

  1. При отправке обрежьте строку в виртуальной машине, если она слишком длинная.
  2. При отправке предупреждать пользователя об усечении и возвращать ему усеченную строку в текстовом поле для редактирования.
  3. Поместите событие в текстовое поле и усеките строку «OnChange» с предупреждением о метке рядом с полем, например, об ошибке веб-формы.

В любом случае, я надеюсь, что вы получите ответы от людей, которые знают, о чем говорят ;)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top