Compartilhar via


Dicionários de Recursos mesclados

Recursos Windows Presentation Foundation (WPF) oferecem suporte às funcionalidades de um dicionário de Recursos mesclados. Essa funcionalidade oferece uma maneira para definir a parte de recursos de um aplicativo WPF fora do aplicativo compilado XAML. Recursos, em seguida, podem ser compartilhados entre aplicativos e são também mais conveniente isolado para localização.

Apresentando um dicionário de recursos mesclados

Na marcação, você use a seguinte sintaxe para introduzir um dicionário de recursos mesclados em uma página:

<Page.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="myresourcedictionary.xaml"/>
      <ResourceDictionary Source="myresourcedictionary2.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Page.Resources>

Observe que o elemento ResourceDictionary não tem um Atributo x:Key, que é geralmente necessário para todos os itens de uma coleção de recursos. Mas outra referência ResourceDictionary dentro da coleção MergedDictionaries é um caso especial, reservado para esse cenário do dicionário de recursos mesclados. O ResourceDictionary que apresenta um dicionário de recurso mescladas não pode ter um Atributo x:Key. Em geral, cada ResourceDictionary dentro da coleção MergedDictionaries especifica um atributo Source. O valor de Source deve ser um uniform resource identifier (URI) que resolve para o local do arquivo de recursos a serem mesclados. O destino do URI deve ser outro arquivo XAML, com ResourceDictionary como seu elemento raiz.

ObservaçãoObservação:

É legal para definir recursos dentro de um ResourceDictionary que é especificado sistema autônomo um dicionário mesclado, sistema autônomo uma alternativa para a especificação Source, ou além quaisquer recursos que são incluídos de fonte especificado. No entanto, esta é não um cenário comum; o cenário principal para dicionários mesclados é mesclar recursos de locais de arquivo externo. Se você desejar especificar recursos na marcação de uma página, você normalmente deve defini-los no ResourceDictionary principal e não nos dicionários mesclados.

Comportamento do dicionário mesclado

Recursos em um dicionário mesclado ocupam um local o escopo de pesquisa de recurso que está logo após o escopo do dicionário principal de recurso nos quais eles são mesclados. Embora uma chave de recurso deva ser exclusiva em qualquer dicionário individual, uma chave pode existir várias vezes em um conjunto de dicionários mesclados. Nesse caso, o recurso que é retornado virá do último dicionário encontrado sequencialmente na coleção MergedDictionaries. Se a coleção MergedDictionaries foi definida no XAML, então a ordem dos dicionários mescladas na coleção é a ordem dos elementos conforme fornecido na marcação. Se uma chave for definida no dicionário principal e também em um dicionário que foi mesclado, então o recurso que é retornado virá do dicionário principal. Essas regras de escopo se aplicam igualmente para referências recurso estático e de referências de recurso dinâmico.

Dicionários mesclados e código

Dicionários mesclados podem ser adicionados a um dicionário Resources através de código. O padrão, ResourceDictionary inicialmente vazio que existe para qualquer propriedade de Resources também tem um padrão, propriedade de coleção de MergedDictionaries inicialmente vazia. Para adicionar um dicionário mesclado através do código, você obtêm uma referência para o ResourceDictionary primário desejado, obtêm seu valor de propriedade de MergedDictionaries e chama Add sobre a Collection genérico que é contida no MergedDictionaries. O objeto que você adiciona deve ser um ResourceDictionary novo. No código, você não define a propriedade Source. Em vez disso, você deve obter um objeto ResourceDictionary criando um ou carregando um. Uma maneira carregar um ResourceDictionary existente para chamar XamlReader.Load em um fluxo de arquivos XAML existente que tenha uma raiz ResourceDictionary, e em seguida, convertendo o valor de retorno XamlReader.Load para ResourceDictionary.

URIs do dicionário de Recursos mesclados

Há várias técnicas para obter informações sobre como incluir um dicionário de recurso mescladas, que são indicadas pelo uniform resource identifier (URI) formato que você usará. Falando genericamente, essas técnicas podem ser divididas em duas categorias: recursos são compilados sistema autônomo parte do projeto e recursos que não são compilados sistema autônomo parte do projeto.

Para recursos que são compilados como parte do projeto, você pode usar um caminho relativo que refere-se ao local do recurso. O caminho relativo é avaliado durante a compilação. O recurso deve ser definido como parte do projeto como uma ação de criação de recursos. Se você incluir um arquivo .XAML de recurso no projeto como recurso, você não precisa copiar o arquivo de recurso para o diretório de saída, o recurso já está incluído no aplicativo compilado. Você também pode usar Ação de Criação de conteúdo, mas você deve, em seguida, copiar os arquivos para o diretório de saída e também implantar os recurso arquivos na mesma relação de caminho para o arquivo executável.

ObservaçãoObservação:

D o não use o recurso inserido ação de compilação. Oferece suporte à ação de compilação propriamente dito está Para WPF aplicativos, mas a resolução do Source não incorporar ResourceManagere, portanto, não é possível separar o recurso individual fora do fluxo. Você ainda pode usar recursos incorporados para outros fins desde que você também usado ResourceManager para acessar os recursos.

Uma técnica relacionada é usar um Pack URI para um arquivo XAML e se referir a ele como fonte. O empacotar URI permite referências a componentes de outras técnicas e assemblies referenciados. Para obter mais informações sobre empacotar URIs, consulte Arquivos de Recurso, Conteúdo e Dados de Aplicações Windows Presentation Foundation.

Para recursos que não são compilados como parte do projeto, o URI é avaliada em tempo de execução. Você pode usar um transporte URI comuns, sistema autônomo arquivo: ou http: para referir-se o arquivo de recurso. A desvantagem de usar a abordagem do recurso noncompiled é esse arquivo: acesso requer etapas adicionais de implantação e http: acesso implica a zona de segurança da Internet.

Reusando diretórios mesclados

Você pode reutilizar ou compartilhar dicionários de recursos mesclados entre aplicativos, pois o dicionário de recursos para mesclar pode ser referenciado por qualquer uniform resource identifier (URI) válido. Exatamente como fazer isso depende sua estratégia de implantação do aplicativo e qual modelo de aplicativo você segue. A estratégia Pack URI mencionada fornece uma maneira comum de prover um recurso mesclado em vários projetos durante o desenvolvimento compartilhando uma referência de montagem. Neste cenário os recursos ainda são distribuídos pelo cliente e pelo menos um dos aplicativos deve implantar o assembly mencionado. Também é possível referenciar recursos mesclados por meio de um URI distribuído que utiliza o protocolo http.

Gravando dicionários mesclados como arquivos de aplicativo local ou para local de armazenamento compartilhado é outro dicionário mesclado possível / cenário de implantação do aplicativo.

Localização

Se recursos que precisam ser localizadas estiverem isolados para os dicionários que são mesclados em dicionários principais e mantidos como XAML soltos, esses arquivos podem ser localizados separadamente. Essa técnica é uma alternativa leve para localizar os conjuntos de recursos de satélite. Para obter detalhes, consulte:Visão geral de globalização e localização do WPF.

Consulte também

Conceitos

Visão geral sobre Recursos

Recursos e código

Arquivos de Recurso, Conteúdo e Dados de Aplicações Windows Presentation Foundation

Referência

ResourceDictionary