Поделиться через


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"];
}
Private Sub SetBGByResource(sender As Object, e As RoutedEventArgs)
    Dim b As Button = TryCast(sender, Button)
    b.Background = DirectCast(Me.Resources("RainbowBrush"), Brush)
End Sub
<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>, если вы программируете с помощью расширений компонентов Visual C++ (C++/CX) или шаблона IDictionary<TKey,TValue>, если вы программируете на C# или Microsoft Visual Basic. API, используемый в коде для работы со словарем и его элементами, отражает базовый шаблон и, следовательно, язык, который вы используете для приложения.

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

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

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

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