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>, если вы программируете с помощью расширений компонентов Visual C++ (C++/CX) или шаблона IDictionary<TKey,TValue>, если вы программируете на C#. API, используемый в коде для работы со словарем и его элементами, отражает базовый шаблон и, следовательно, язык, который вы используете для приложения.
Приложение также имеет свойство Resources , которое можно использовать для хранения ресурсов, которые должны быть доступны с нескольких страниц в приложении. Ресурсы для пользовательских элементов управления также можно хранить в отдельном XAML-файле, который создается шаблоном проекта по умолчанию для шаблонного элемента управления.
Элементы, которые отображаются в коллекции ресурсов XAML, не обязательно являются полным набором ресурсов, определенных XAML, доступных во время выполнения. Другие ресурсы доступны во время выполнения из-за влияния свойства MergedDictionaries на ResourceDictionary. Значение MergedDictionaries
может вводить другие словари, например ресурсы, определенные системой, например ресурсы из шаблонов элементов управления XAML по умолчанию. Ресурсы, относящиеся к теме среды выполнения, также доступны в аналогичном свойстве ThemeDictionaries . Если вы обращаетесь к коллекции Resources во время выполнения и запрашиваете определенный ключ с помощью Item
индексатора или метода Lookup , вы можете получить доступ к этим ресурсам и получить их. Подробнее: ResourceDictionary и ссылки на ресурсы XAML. Кроме того, Application.Resources может предоставлять ресурсы, доступные для любой ссылки НА XAML в приложении, и таким образом расширять ресурсы в любом заданном словаре FrameworkElement.Resources.