Практическое руководство. Использование словаря ресурсов области определения приложения
В этом примере показано, как определить и использовать пользовательский словарь ресурсов области определения приложения.
Пример
Application предоставляет хранилище области видимости приложения для общих ресурсов: Resources. По умолчанию свойство Resources инициализируется экземпляром типа ResourceDictionary. Этот экземпляр используется при получении и установке свойств области видимости приложения с помощью Resources. Дополнительные сведения см. в разделе Практическое руководство. Получение и задание ресурсов области видимости приложения.
Если имеется множество ресурсов, настроенных с помощьюResources, для хранения этих ресурсов можно использовать пользовательский словарь ресурсов и задать для них Resources. Ниже показано, как объявить пользовательский словарь ресурсов с помощью XAML.
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<SolidColorBrush x:Key="StandardSolidColorBrush" Color="Blue" />
<LinearGradientBrush x:Key="StandardLinearGradientBrush" StartPoint="0.0,0.0" EndPoint="1.0,1.0">
<LinearGradientBrush.GradientStops>
<GradientStop Color="White" Offset="0" />
<GradientStop Color="Black" Offset="1" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</ResourceDictionary>
Замена целых словарей ресурсов с помощью Resources позволяет поддерживать темы области видимости приложения, когда каждая тема инкапсулируется одним словарем ресурсов. В следующем примере показано, как задать свойство ResourceDictionary.
<!--Set the Application ResourceDictionary-->
<Application.Resources>
<ResourceDictionary Source="MyResourceDictionary.xaml" />
</Application.Resources>
В следующем фрагменте кода показано, как можно получить ресурсы области видимости приложения из словаря ресурсов, предоставляемого Resources, в XAML.
<!--Set the brush as a StaticResource from the ResourceDictionary-->
<Rectangle Name="Rect" Height="200" Width="100" Fill="{StaticResource ResourceKey=StandardSolidColorBrush}" />
Ниже показано, как можно получить ресурсы в коде.
//Get a resource from the ResourceDictionary in code
Brush gradientBrush = (Brush)Application.Current.FindResource("StandardLinearGradientBrush");
'Get a resource from the ResourceDictionary in code
Dim GradientBrush As Brush = Application.Current.FindResource("StandardLinearGradientBrush")
При использовании Resources необходимо учитывать два фактора. Во-первых, ключ словаря является объектом, поэтому необходимо использовать один и тот же экземпляр объекта при установке и получении значения свойства. (Обратите внимание, что ключ учитывает регистр при использовании строки.) Во-вторых, значение словаря является объектом, поэтому при получении значения свойства необходимо преобразовать значение в нужный тип.
Некоторые типы ресурсов могут автоматически использовать свойство, определенное типом как явный ключ, например типы Style и DataTemplate. Это может переопределить значение x:Key
. Чтобы гарантировать соблюдение ключа x:Key
, объявите его перед явным свойством ключа. Дополнительные сведения см. в статье Стили, DataTemplates и неявные ключи.
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по