WPF: использовать SpellCheck на TextBox только для чтения - PullRequest
0 голосов
/ 16 июля 2009

Я хочу отобразить текст с волнистыми красными линиями, где слово написано с ошибкой, но я хочу, чтобы текст можно было выбирать, а не редактировать. Если я установлю для свойства TextBox IsReadOnly значение True или для IsEnabled значение False, волнистые красные линии исчезнут, и я не смогу обойти их, поместив что-то прозрачное, так как это лишит пользователя возможности выбирать участки текста.

Могу ли я в любом случае сохранить красные линии, разрешить выделение текста, но предотвратить изменение самого текста?

Спасибо

Ответы [ 2 ]

2 голосов
/ 16 июля 2009

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

0 голосов
/ 16 июля 2009

Спасибо, Дэвид. В настоящее время я смотрю на 2 возможных решения, ваше и следующее:

Я создал пользовательский элемент управления, который основан на стандартном TextBox, но в этом поместье фактически расположены 2 текстовых поля:

<TextBox Name="tbxBack" 
         Foreground="Transparent"
         SpellCheck.IsEnabled="True"
         TextWrapping="Wrap" 
         SnapsToDevicePixels="True"/>
<TextBox Name="tbxFront" 
         Background="Transparent"
         TextWrapping="Wrap" 
         SnapsToDevicePixels="True" 
         IsReadOnly="True"/>

Я думаю, что здесь довольно просто, но я обеспокоен потенциальными накладными расходами, которые это вызовет.

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

...