WPF 4.0. Что нового? Часть 3.
- modified:
- reading: 2 minutes
Продолжу серию постов о нововведениях в 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>
И получить что-то вроде
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.