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

0

В некотором смысле, одна из основных задач разработки ПО для компьютеров – максимальный уход от повторений кода. (Или, по крайней мере, в той части, что касается кода, создаваемого людьми. Мы не против, если наши компьютеры повторяются, мы просто хотим, чтобы эти повторения были эффективными.) XAML может показаться особенно плодородной почвой для повторений, потому что это всего лишь разметка, а не настоящий язык программирования. Не составит труда представить ситуации, когда целый ряд элементов будут иметь одинаковые параметры (например, значения свойств HorizontalAlignment, VerticalAlignment или Margin). Безусловно, для таких случаев удобно иметь способ избежать повторяющейся разметки. Если когда-либо возникнет необходимость изменить одно из этих свойств, изменять его один раз и в одном месте намного удобнее, чем бесконечное множество раз.

К счастью, создателями XAML были разработчики, которые (как и все мы) предпочитают не вводить одно и то же снова и снова.

Самым универсальным решением, позволяющим избежать повторяющейся разметки, является применение стиля Silverlight. А предварительные настройки стилей – самый обобщенный механизм совместного использования стилей. Их называют ресурсом. Не стоить путать ресурсы, о которых пойдет речь здесь, с ресурсами, обсуждаемыми в главе 4 при рассмотрении встраивания изображений в приложение. Чтобы избежать возможной путаницы, я буду называть ресурсы в данной главе XAML-ресурсами, даже если они могут существовать также и в коде.

XAML-ресурсы – это всегда экземпляры определенного .NET-класса или структуры, либо существующего класса или структуры, либо пользовательского класса. Если в качестве XAML- ресурса определен конкретный класс, создается только один экземпляр данного класса, который используется совместно всеми сторонами, нуждающимися в этом ресурсе.

Факт совместного использования ресурсов немедленно налагает ограничение на использование многих классов в качестве XAML-ресурсов. Например, один экземпляр TextBlock не может использоваться более одного раза, потому что у TextBlock должен быть уникальный родитель и уникальное местоположение в границах этого родителя. И то же самое можно сказать о любом другом элементе. Все производные от UIElement не будут выступать в роли ресурсов, потому что не могут быть использованы совместно.

А вот совместное использование кистей – довольно типичное явление. Это самый распространенный способ обеспечить характерное и единообразное визуальное представление приложения. Анимации тоже подходят для совместного использования, как и текстовые строки и числа. Их можно рассматривать как XAML-эквиваленты строковых или числовых констант в приложении на C#. Если необходимо изменить одну из них, можно просто внести изменения в ресурс, и не выискивать все случаи употребления этих величин по всему XAML.

Для обеспечения хранения ресурсов в классе FrameworkElement определено свойство Resources типа ResourceDictionary (Словарь ресурсов). Для любого элемента, производного от FrameworkElement, можно задать Resources как свойство-элемент. По соглашению его размещают сразу под открывающим тегом. Рассмотрим коллекцию для класса страницы, унаследованного от PhoneApplicationPage:

<phone:PhoneApplicationPage … >

<phone:PhoneApplicationPage.Resources> </phone:PhoneApplicationPage.Resources>

</phone:PhoneApplicationPage>

Коллекцию ресурсов, ограниченную тегами Resources, иногда называют разделом ресурсов. Все элементы данного конкретного PhoneApplicationPage могут использовать перечисленные ресурсы.

Класс Application также определяет свойство Resources, и файл App.xaml, автоматически создаваемый Visual Studio в новом приложении на Silverlight, включает пустой раздел ресурсов:

<Application . >

<Application.Resources> </Application.Resources>

</Application>

Ресурсы, определенные в коллекции Resources для FrameworkElement, доступны только в рамках этого элемента и вложенных в него элементов. Ресурсы, определенные в классе Application, доступны всему приложению.

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

По теме:

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