outcoldman
outcoldman Denis Gladkikh

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

.NET, .NET 4.0, WPF, WPF 4, and Visual Studio 2010

Продолжу серию постов о нововведениях в 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">
    Hello, Hello, Hello
</TextBox>

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

Untitled

ClearTypeHint

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

cth

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

TextFormattingMode и TextRenderingMode

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

Magna Carta Ideal vs Display 8pt annotated_4

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

CT vs Grayscale vs Aliased_4

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

Have feedback or questions? Looking for consultation?

My expertise: MongoDB, ElasticSearch, Splunk, and other databases. Docker, Kubernetes. Logging, Metrics. Performance, memory leaks.

Send me an email to public@denis.gladkikh.email.

The content on this site represents my own personal opinions and thoughts at the time of posting.

Content licensed under the Creative Commons CC BY 4.0.