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.