Главная » Разработка для Windows Phone 7 » x:Key и x:Name

0

Чтобы использовать XAML-ресурс из кода, можно просто указать в свойстве Resources имя необходимого ресурса как индекс. Например, в файле выделенного кода MainPage.xaml.cs данный код будет обеспечивать извлечение ресурса под именем «brush» из коллекции Resources элемента MainPage:

this.Resources["brush"|

После этого, вероятно, понадобится привести этот объект к соответствующему типу, в данном случае это либо Brush, либо LinearGradientBrush. Сборка коллекции Resources выполняется во время обработки XAML, поэтому этот ресурс не может использоваться до вызова метода InitializeComponent в конструкторе файла выделенного кода.

Точно так же можно ссылаться на ресурсы, определенные в других коллекциях Resource того же XAML-файла. Например, пусть имеется ресурс «margin», описанный в коллекции Resources сетки для содержимого. Доступ к нему можно организовать следующим образом:

ContentPanel.Resources["margin"|

Если в коллекции Resources элемента ресурс с таким именем не найден, поиск выполняется в коллекции Resources класса App. Если ресурс не найден и там, индексатор возвращает null.

Аспекты, связанные с наследием Silverlight 1.0, позволяют использовать для идентификации ресурсов x:Name, а не x:Key:

<phone:PhoneApplicationPage.Resources>

<LinearGradientBrush x:Name="brush">

</phone:PhoneApplicationPage.Resources>

Здесь есть одно большое преимущество: имя хранится как поле в автоматически формируемом файле кода, что позволяет ссылаться на ресурс в файле выделенного кода, как на любое другое поле:

txtblk.Foreground = brush;

Это самый удобный синтаксис для совместного использования ресурсов в XAML и коде. Но если для ресурса применяется x:Name, это имя должно быть уникальным в рамках XAML- файла.

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

По теме:

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