Como usar um dicionário de recursos de escopo do aplicativo
Este exemplo mostra como definir e usar um dicionário de recursos personalizado de escopo do aplicativo.
Exemplo
Application Expõe um repositório de escopo de aplicativo para recursos compartilhados: Resources. Por padrão, a Resources propriedade é inicializada com uma instância do ResourceDictionary tipo. Use essa instância quando obtém e define propriedades de escopo de aplicativo usando Resourceso . Para obter mais informações, consulte Como: Obter e definir um recurso de escopo de aplicativo.
Se você tiver vários recursos definidos usando Resourceso , poderá usar um dicionário de recursos personalizado para armazenar esses recursos e definir Resources com ele. A seguir mostra como você declara um dicionário de recursos personalizado usando 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>
Trocar dicionários de recursos inteiros usando Resources permite que você ofereça suporte a temas de escopo de aplicativo, onde cada tema é encapsulado por um único dicionário de recursos. O exemplo a seguir mostra como definir o ResourceDictionary.
<!--Set the Application ResourceDictionary-->
<Application.Resources>
<ResourceDictionary Source="MyResourceDictionary.xaml" />
</Application.Resources>
A seguir mostra como você pode obter recursos de escopo de aplicativo do dicionário de recursos exposto por Resources em XAML.
<!--Set the brush as a StaticResource from the ResourceDictionary-->
<Rectangle Name="Rect" Height="200" Width="100" Fill="{StaticResource ResourceKey=StandardSolidColorBrush}" />
O exemplo seguinte mostra como é possível também obter os recursos em código.
//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")
Há duas considerações a serem feitas ao usar Resourceso . Primeiro, a chave do dicionário é um objeto, portanto é preciso usar exatamente a mesma instância de objeto quando ambos definem e obtêm um valor da propriedade. (Observe que a chave diferencia maiúsculas de minúsculas ao usar uma cadeia de caracteres.) Em segundo lugar, o valor do dicionário é um objeto, portanto, você terá que converter o valor para o tipo desejado ao obter um valor de propriedade.
Alguns tipos de recursos podem usar automaticamente uma propriedade definida pelo tipo como uma chave explícita, como os Style tipos e DataTemplate . Isso pode substituir seu x:Key
valor. Para garantir que sua x:Key
chave seja respeitada, declare-a antes da propriedade de chave explícita. Para obter mais informações, consulte Estilos, DataTemplates e chaves implícitas.
Confira também
.NET Desktop feedback
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de