Compartilhar via


Application.Resources Propriedade

Definição

Obtém ou define uma coleção de recursos de escopo de aplicativo, como estilos e pincéis.

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

Valor da propriedade

ResourceDictionary

Um objeto ResourceDictionary que contém zero ou mais recursos de escopo do aplicativo.

Atributos

Exemplos

Este exemplo ilustra como usar XAML junto com recursos de escopo do aplicativo para criar uma aparência visual consistente. O primeiro exemplo é app.xaml; o segundo, de 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>

O exemplo a seguir mostra como definir um recurso de aplicativo em código e XAML (no arquivo App.xaml em um projeto WPF em C# ou no arquivo Application.xaml em um projeto do WPF Visual Basic).

// 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>

O exemplo a seguir mostra como obter um recurso de aplicativo no código.

// 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)

Comentários

A Resources propriedade pode ser usada para compartilhar recursos entre as janelas e elementos de um aplicativo. Além disso, a Resources propriedade é incluída no caminho de pesquisa de recursos, que é percorrido na seguinte ordem:

  1. Elementos

  2. Windows

  3. Application.Resources

  4. Sistema

Consequentemente, os elementos de interface do usuário podem ser associados aos recursos de escopo do aplicativo. Além disso, se os recursos forem alterados, o sistema de recursos garantirá que as propriedades do elemento associadas a esses recursos sejam atualizadas automaticamente para refletir a alteração.

Os recursos de escopo do aplicativo fornecem uma maneira simples de dar suporte a um tema consistente em seu aplicativo. Você pode criar facilmente um tema em XAML usando a Application.Resources marca. No entanto, se o aplicativo der suporte a vários temas, que podem conter um grande número de elementos de tema, talvez seja mais fácil gerenciá-los usando uma ResourceDictionary instância para cada tema. Dessa forma, um novo tema pode ser aplicado definindo a propriedade Resources como a apropriada ResourceDictionary.

Há duas considerações a serem consideradas ao usar Resources. Primeiro, a chave de dicionário é um objeto, portanto, você precisa usar exatamente a mesma instância de objeto ao definir e obter um valor de 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ê precisará converter o valor para o tipo desejado ao obter um valor de propriedade.

Resources é thread safe e está disponível em qualquer thread.

Aplica-se a