Главная » Разработка для Windows Phone 7 » Наследование свойств Windows Phone 7

0

Чтобы поэкспериментировать с XAML, удобно создать проект специально для этого. Назовем этот проект XamlExperiment и разместим TextBlock в сетке для содержимого:

Проект Silverlight: XamlExperiment Файл: MainPage.xaml (фрагмент)

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

<TextBlock Text="Hello, Windows Phone 7!" /> </Grid>

Текст отображается в верхнем левом углу клиентской области страницы. Сделаем его курсивом. Для этого зададим соответствующее значение свойству FontStyle нашего TextBlock:

<TextBlock Text="Hello, Windows Phone 7!" FontStyle="Italic" />

Или можно добавить атрибут FontStyle в тег PhoneApplicationPage:

<phone: PhoneApplicationPage … FontStyle="Italic" …

Этот атрибут FontStyle может располагаться в теге PhoneApplicationPage в любом месте. Обратите внимание, что если свойство задано в данном теге, его значение распространяется на все элементы TextBlock на странице. Это называется наследованием свойств. Значения определенных свойств – сюда входят лишь Foreground и свойства шрифтов FontFamily, FontSize, FontStyle, FontWeight (Насыщенность шрифта) и FontStretch (Ширина шрифта) – распространяются по всему дереву визуальных элементов. Именно благодаря этому значения свойств FontFamily, FontSize и Foreground (а теперь еще и FontStyle) для TextBlock могут задаваться в PhoneApplicationPage.

Наследование свойств можно проследить, начиная с объекта PhoneApplicationPage. FontStyle задается для PhoneApplicationPage, его значение наследуется самым внешним Grid, затем объектами, размещенными в Grid, и, наконец, TextBlock. Кажется, все замечательно, проблема лишь в том, что в Grid нет свойства FontStyle! Если задать FontStyle для элемента Grid, Visual Studio выдаст предупреждение. Наследование свойств – несколько более сложный вопрос, чем просто передача значений от родителя потомку, и это один из аспектов Silverlight, который тесно связан с ролью свойств-зависимостей, которые будут рассматриваться в главе 11.

Несмотря на то что свойству FontStyle задано значение Italic в теге PhoneApplicationPage, задаем FontStyle повторно прямо в TextBlock:

<TextBlock Text="Hello, Windows Phone 7!" FontStyle="Normal" />

Теперь текст в этом конкретном TextBlock будет отображаться обычным, не курсивным шрифтом. Как мы видим, значение FontStyle, заданное в TextBlock – которое называют

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

Локальные параметры имеют приоритет над

Унаследованными свойствами, которые являются более приоритетными, чем

Значения по умолчанию

Эта схема будет дополняться по мере того, как мы будем узнавать новые способы задания свойств.

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

По теме:

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