WPF 4.0. Что нового? Часть 3

Продолжу серию постов о нововведениях в WPF 4.

Bindable Run

Из нового в WPF 4 можно сказать еще о том, что у элемента Run теперь свойство Text можно биндить, переделали из обычного CLR свойства. Мелочь, но с проблемой один раз я встретился, которая описана тут New WPF Features: Bindable Run.

Custom Dictionary

В WPF, как вы знаете, есть поддержка проверки правописания SpellCheck. А может и не знаете, потому что поддерживаются только 4 языка: английский, немецкий, испанский и французский, и расширить это никак нельзя. В WPF 4.0 появилась возможность заводить Custom Dictionary, чтобы добавить всяческие слова, вроде lol, в лексикон проверки. Но опять же, сделать проверку русского языка при помощи этого нельзя, даже если вы забьете всевозможные русские слова в такой словарь, то изначально вам WPF скажет, что данный язык не поддерживается. Не понимаю я такой подход, почему бы не сделать механизм открытым, для самостоятельного расширения возможностей SpellCheck, умелые руки давно бы прикрутили словари от OpenOffice, я был бы первым. Более подробная информация об этом тут: Custom Dictionaries.

Текст

CaretBrush и SelectionBrush

Теперь у каретки и для выделения можно задать кисти:

<TextBox FontSize="24" CaretBrush="Green" SelectionOpacity="0.1" SelectionBrush="Red"> 
FakePre-71fff85d237240f4bf61fcaf54fc48c9-67603bdd633649b4bb3ea60837e9c766FakePre-4f7d90a286e04749b41ad6d0517d418d-e75db482a2ca40bd88932c0366ff07ca

И получить что-то вроде

ClearTypeHint

Очередная заклепка в WPF – свойство RenderOptions.ClearTypeHint. Идея в следующем, если в вашем визуальном дереве на каком то шаге используется, например, Opacity, то все визуальное дерево ниже уровнем будет прорисовывать текст без ClearType. Из-за этого текст будет выглядеть значительно другим:

Другим примером может быть, если вы у Grid'а будете использовать свойство Clip. Свойством RenderOptions.ClearTypeHint можно задать Enabled – для того, чтобы текст все таки прорисовался с ClearType (если он рисуется без Opacity). Хороший пример для ознакомления приводится тут: New WPF Features: ClearTypeHint.

TextFormattingMode и TextRenderingMode

Теперь мы можем действительно управлять тем, как будет отрисовываться текст. Для этого нам предоставили два свойства TextOptions.TextFormattingMode и TextOptions.TextRenderingMode. Первому можно установить Ideal – текст будет выглядеть как обычно в WPF, или Display – будет выглядеть как текст GDI. Display советуют применять только с мелким текстом, в остальных случаях оставить как есть. Разница в чтении мелкого текста заметна сразу:

Свойству TextOptions.TextRenderingMode можно установить Auto, Aliased, Grayscale и ClearType.

Auto – выставляет ClearType, если он не отключен. Более подробную информацию о тексте можно посмотреть тут: WPF 4.0 Text Stack Improvements.

Автор: Денис Гладких