Главная » Разработка для Windows Phone 7 » Свойства и строковые элементы TextBlock Windows Phone 7

0

Мы обсуждаем TextBlock с самых первых страниц данной книги, и, наконец, пришло время рассмотреть его более подробно. Элемент TextBlock включает пять свойств для задания шрифтов: FontFamily, FontSize, FontStretch, FontStyle, and FontWeight.

Как было показано ранее, свойство FontStyle может принимать значения Normal или Italic. Теоретически свойству FontStretch можно задать значения Condensed (Уплотненный) и Expanded (Разреженный), но я никогда не встречал, чтобы это работало в Silverlight. Как правило, для FontWeight задают значения Normal или Bold, хотя существуют и другие варианты: Black (Темный), SemiBold (Полужирный) и Light (Светлый).

<TextBlock>

Некоторый TeKCT<LineBreak />И еще немного текста.

</TextBlock>

Особый интерес представляет Run, потому что у него также есть собственные свойства FontFamily, FontSize, FontStretch, FontStyle, FontWeight, Foreground и TextDecorations. Это позволяет форматировать текст любым самым причудливым образом:

<TextBlock FontSize="36"

TextWrapping="Wrap">

This is

some <Run FontWeight="Bold">bold</Run> text and some <Run FontStyle="Italic">italic</Run> text and some <Run Foreground="Red">red</Run> text and some <Run TextDecorations="Underline">underlined</Run> text and some <Run FontWeight="Bold" FontStyle="Italic" Foreground="Cyan" FontSize="72"

TextDecorations=мUnderlineM>big</Run> text.

</TextBlock>

В дизайнере Visual Studio текст, заключенный в теги Run, визуально может не отличаться от текста, находящегося вне тегов Run. Это ошибка. Если запустить приложение на эмуляторе, все будет выглядеть нормально:

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

Несмотря на массу преимуществ, TextBlock не обеспечивает всех возможностей, необходимых для отображения абзаца текста, какие можно найти в классе Paragraph (Абзац) (например, отступа или выступа первой строки). Мне не известен способ реализации выступа первой строки, но отступ создать довольно просто, и я продемонстрирую это в следующей главе.

Использование свойства Inlines позволяет нам создать приложение для демонстрации всех возможностей свойства FontFamily. В XAML мы можем присвоить FontFamily строковое значение. (В коде пришлось бы создавать экземпляр класса FontFamily.) По умолчанию применяется шрифт «Portable User Interface». На эмуляторе телефона этот стандартный шрифт проецируется в Segoe WP, разновидность шрифта Segoe для Windows Phone, часто используемый в продуктах Майкрософт и печатных материалах, в том числе и в этой книге.

В приложении FontFamilies перечислены все значения FontFamily, предлагаемые системой Intellisense в Visual Studio:

Проект Silverlight: FontFamilies Файл: MainPage.xaml

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock FontSize="24">

<Run FontFamily="Arial">Arial</Run><LineBreak />

<Run FontFamily="Arial Black">Arial Black</Run><LineBreak />

<Run FontFamily="Calibri">Calibri</Run><LineBreak />

<Run FontFamily="Comic Sans MS">Comic Sans MS</Run><LineBreak />

<Run FontFamily="Courier New">Courier New</Run><LineBreak />

<Run FontFamily="Georgia">Georgia</Run><LineBreak />

<Run FontFamily="Lucida Sans Unicode">Lucida Sans Unicode</Run><LineBreak /> <Run FontFamily="Portable User Interface">Portable User Interface</Run><LineBreak />

<Run FontFamily="Segoe WP">Segoe WP</Run><LineBreak />

<Run FontFamily="Segoe WP Black">Segoe WP Black</Run><LineBreak />

<Run FontFamily="Segoe WP Bold">Segoe WP Bold</Run><LineBreak />

<Run FontFamily="Segoe WP Light">Segoe WP Light</Run><LineBreak />

<Run FontFamily="Segoe WP Semibold">Segoe WP Semibold</Run><LineBreak />

<Run FontFamily="Segoe WP SemiLight">Segoe WP SemiLight</Run><LineBreak />

<Run FontFamily="Tahoma">Tahoma</Run><LineBreak />

<Run FontFamily="Times New Roman">Times New Roman</Run><LineBreak /> <Run FontFamily="Trebuchet MS">Trebuchet MS</Run><LineBreak /> <Run FontFamily="Verdana">Verdana</Run><LineBreak /> <Run FontFamily="Webdings">Webdings</Run> (Webdings) </TextBlock> </Grid>

Вот что мы получаем:

Если сделать ошибку в написании имени шрифта, присваиваемого FontFamily, ничего страшного, просто будет использован шрифт по умолчанию.

Предопределенные ресурсы включают четыре ключа, которые возвращают объекты типа FontFamily: PhoneFontFamilyNormal, PhoneFontFamilyLight, PhoneFontFamilySemiLight и PhoneFontFamilySemiBold. Они возвращают соответствующие шрифты Segoe WP.

Источник: Чарльз Петзольд, Программируем Windows Phone 7, Microsoft Press, © 2011.

По теме:

  • Комментарии