Application.Resources Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или задает коллекцию ресурсов области приложения, например, стилей и кистей.
public:
property System::Windows::ResourceDictionary ^ Resources { System::Windows::ResourceDictionary ^ get(); void set(System::Windows::ResourceDictionary ^ value); };
public System.Windows.ResourceDictionary Resources { get; set; }
[System.Windows.Markup.Ambient]
public System.Windows.ResourceDictionary Resources { get; set; }
member this.Resources : System.Windows.ResourceDictionary with get, set
[<System.Windows.Markup.Ambient>]
member this.Resources : System.Windows.ResourceDictionary with get, set
Public Property Resources As ResourceDictionary
Значение свойства
Объект ResourceDictionary, содержащий ноль или более ресурсов области приложения.
- Атрибуты
Примеры
В этом примере показано, как использовать XAML вместе с ресурсами области приложения для создания согласованного визуального вида. Первый пример — из App.xaml; второй — из MainWindow.xaml.
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml"
>
<Application.Resources>
<SolidColorBrush x:Key="BackgroundColor" Color="Yellow"></SolidColorBrush>
</Application.Resources>
</Application>
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ApplicationResourcesSnippetSample_XAML"
Height="300"
Width="300"
Background="{StaticResource BackgroundColor}"
>
<Grid>
<!-- Additional XAML. -->
</Grid>
</Window>
В следующем примере показано, как задать ресурс приложения в коде и XAML (в файле App.xaml в проекте WPF C# или файле Application.xaml в проекте Visual Basic WPF).
// Set an application-scope resource
Application.Current.Resources["ApplicationScopeResource"] = Brushes.White;
' Set an application-scope resource
Application.Current.Resources("ApplicationScopeResource") = Brushes.White
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.App"
StartupUri="MainWindow.xaml"
Startup="App_Startup"
Exit="App_Exit">
<Application.Resources>
<SolidColorBrush x:Key="ApplicationScopeResource" Color="White"></SolidColorBrush>
</Application.Resources>
</Application>
В следующем примере показано, как получить ресурс приложения в коде.
// Get an application-scope resource
Brush whiteBrush = (Brush)Application.Current.Resources["ApplicationScopeResource"];
' Get an application-scope resource
Dim whiteBrush As Brush = CType(Application.Current.Resources("ApplicationScopeResource"), Brush)
Комментарии
Это Resources свойство можно использовать для совместного использования ресурсов в окнах и элементах приложения. Кроме того, Resources свойство включается в путь поиска ресурсов, который проходит в следующем порядке:
Элементы
Windows
Система
Следовательно, элементы пользовательского интерфейса могут привязаться к ресурсам области приложения. Кроме того, если ресурсы изменяются, система ресурсов гарантирует, что свойства элементов, привязанные к этим ресурсам, автоматически обновляются в соответствии с изменением.
Ресурсы области приложения предоставляют простой способ поддержки согласованной темы в приложении. Вы можете легко создать тему в XAML с помощью тега Application.Resources
. Однако если приложение поддерживает несколько тем, которые могут содержать большое количество элементов темы, управлять ими можно с помощью одного ResourceDictionary экземпляра для каждой темы. Таким образом, новую тему можно применить, задав свойству Resources соответствующее ResourceDictionaryзначение.
При использовании Resources необходимо учитывать два фактора. Во-первых, ключ словаря является объектом, поэтому при установке и получении значения свойства необходимо использовать точно один и тот же экземпляр объекта (обратите внимание, что ключ учитывает регистр при использовании строки). Во-вторых, значение словаря является объектом, поэтому при получении значения свойства необходимо преобразовать его в нужный тип.
Resources является потокобезопасной и доступен из любого потока.