FrameworkElement.Resources Свойство

Определение

Возвращает локально определенный словарь ресурсов. В XAML можно установить элементы ресурсов в качестве дочерних frameworkElement.Resources элементов объекта элемента свойства с помощью синтаксиса неявной коллекции XAML.

ResourceDictionary Resources();

void Resources(ResourceDictionary value);
public ResourceDictionary Resources { get; set; }
var resourceDictionary = frameworkElement.resources;
frameworkElement.resources = resourceDictionary;
Public Property Resources As ResourceDictionary
<frameworkElement>
  <frameworkElement.Resources>
    oneOrMoreResourceElements
  </frameworkElement.Resources>
</frameworkElement>

Значение свойства

Текущий локально определенный словарь ресурсов, где доступ к каждому ресурсу можно получить с помощью ключа.

Примеры

В этом примере показано определение XAML простого словаря ресурсов, содержащего один элемент DataTemplate.

<Grid.Resources>
  <DataTemplate x:Key="CBTemplate">
    <Grid>
      <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
      </Grid.ColumnDefinitions>
      <Image Grid.Column="0" Width="50" Height="50" 
        Source="{Binding Photo}" Stretch="Fill"/>
      <TextBlock Grid.Column="1" Text="{Binding Title}" 
        Margin="10" HorizontalAlignment="Left" FontSize="20"/>
    </Grid>
  </DataTemplate>
</Grid.Resources>
<GridView ItemTemplate="{StaticResource CBTemplate}" .../>

Использование определений ресурсов XAML и ссылок на ресурсы — это типичный способ использования свойства Resources. Большая часть времени XAML может обрабатывать распространенные сценарии ресурсов. Но вы также можете использовать свойство для доступа к API коллекции и таким образом получить ресурсы с кодом среды выполнения, если это необходимо для вашего сценария. В этом примере показан доступ к коду к свойству Resources . В этом примере Resources ссылки на свойства являются встроенными и сразу после использования индексатора, извлекающего элемент ResourceDictionary со строковым ключом RainbowBrush. Обратите внимание на явный приведение; Возвращаемое значение для элементов из ResourceDictionary всегда является нетипизированным объектом.

void MainPage::SetBGByResource(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
  Button^ b = safe_cast<Windows::UI::Xaml::Controls::Button^>(sender);
  b->Background = safe_cast<Windows::UI::Xaml::Media::Brush^>(this->Resources->Lookup("RainbowBrush"));
}
void SetBGByResource(object sender, RoutedEventArgs e)
{
  Button b = sender as Button;
  b.Background = (Brush)this.Resources["RainbowBrush"];
}
<Page.Resources>
...
  <LinearGradientBrush x:Key="RainbowBrush">
    <GradientStop Color="Red" Offset="0.05" />
    <GradientStop Color="Orange" Offset="0.23" />
    <GradientStop Color="Yellow" Offset="0.41" />
    <GradientStop Color="Green" Offset="0.59" />
    <GradientStop Color="Blue" Offset="0.77" />
    <GradientStop Color="Purple" Offset="0.95" />
 </LinearGradientBrush>
</Page.Resources>

Комментарии

Основная цель элементов в Resources коллекции — ссылаться на них из других частей XAML, используя ссылку на расширение разметки {StaticResource} (или аналогичную ссылку на расширение разметки {ThemeResource} ). Если вы хотите получить доступ к Resources коллекции во время выполнения, можно использовать API соответствующего шаблона для запроса, добавления или удаления элементов в ResourceDictionary.

Дополнительные сведения и примеры см. в справочниках по ресурсам ResourceDictionary и XAML.

ResourceDictionary — это набор ключей, основанный на шаблоне IMap<K,V>, если вы программируетсяе с помощью C++, или шаблон IDictionary<TKey, TValue> при программировании с помощью C#. API, используемый в коде для работы с словарем и его элементами, отражает базовый шаблон и таким образом язык, используемый для приложения.

Приложение также имеет свойство Resources , которое можно использовать для хранения ресурсов, которые должны быть доступны с нескольких страниц в приложении. Ресурсы для пользовательских элементов управления также можно хранить в отдельном XAML-файле, созданном шаблоном проекта по умолчанию шаблона шаблона элемента управления.

Элементы, которые отображаются в коллекции ресурсов XAML, не обязательно являются целыми ресурсами, определенными XAML, доступными во время выполнения. Другие ресурсы доступны во время выполнения из-за влияния свойства MergedDictionaries на ResourceDictionary. Это MergedDictionaries значение может привести к другим словарям, таким как ресурсы, определенные системой, например ресурсы из шаблонов элементов управления XAML по умолчанию. Ресурсы, относящиеся к теме среды выполнения, также доступны из аналогичного свойства ThemeDictionaries . Если вы обращаетесь к коллекции ресурсов во время выполнения и запрашиваете определенный ключ с помощью Item индексатора или метода Lookup , вы можете получить доступ к этим ресурсам и получить их. Дополнительные сведения см. в справочниках по ресурсам ResourceDictionary и XAML. Кроме того, Application.Resources может предоставлять ресурсы, доступные для любой ссылки XAML в приложении, и таким образом расширить ресурсы в любом заданном словаре FrameworkElement.Resources.

Применяется к

См. также раздел