A autoridade especifica o tipo de pacote no qual uma parte está contida, enquanto o caminho especifica o local de uma parte dentro de um pacote.The authority specifies the type of package that a part is contained by, while the path specifies the location of a part within a package.

Esse conceito é ilustrado pela figura a seguir:This concept is illustrated by the following figure:

As seções a seguir explicam como construir URIsURIs o pacote usando essas duas autoridades em conjunto com os caminhos apropriados para identificar recursos, conteúdo e site de arquivos de origem.The following sections explain how to construct pack URIsURIs using these two authorities in conjunction with the appropriate paths for identifying resource, content, and site of origin files.

URIs de pacote de arquivo de recursoResource File Pack URIs

Os arquivos de recurso são configurados como itens do MSBuild Resource e são compilados em assemblies.Resource files are configured as MSBuild Resource items and are compiled into assemblies.O WPF dá suporte à construção de URIs de pacote que podem ser usados para identificar arquivos de recursos que são compilados no assembly local ou compilados em um assembly que é referenciado do assembly local.WPF supports the construction of pack URIs that can be used to identify resource files that are either compiled into the local assembly or compiled into an assembly that is referenced from the local assembly.

Arquivo de recurso de assembly localLocal Assembly Resource File

O pacote URIURI para um arquivo de recurso que é compilado no assembly local usa a seguinte autoridade e caminho:The pack URIURI for a resource file that is compiled into the local assembly uses the following authority and path:

Autoridade: application:///.Authority: application:///.

Caminho: O nome do arquivo de recurso, incluindo seu caminho, relativo à raiz da pasta do projeto do assembly local.Path: The name of the resource file, including its path, relative to the local assembly project folder root.

O exemplo a seguir mostra o URIURI pacote para XAMLXAML um arquivo de recurso que está localizado na raiz da pasta do projeto do assembly local.The following example shows the pack URIURI for a XAMLXAML resource file that is located in the root of the local assembly's project folder.

pack://application:,,,/ResourceFile.xaml

O exemplo a seguir mostra o URIURI pacote para XAMLXAML um arquivo de recurso que está localizado em uma subpasta da pasta do projeto do assembly local.The following example shows the pack URIURI for a XAMLXAML resource file that is located in a subfolder of the local assembly's project folder.

Caminho: O nome de um arquivo de recurso que é compilado em um assembly referenciado.Path: The name of a resource file that is compiled into a referenced assembly.O caminho deve estar de acordo com o seguinte formato:The path must conform to the following format:

AssemblyShortName: o nome curto do assembly referenciado.AssemblyShortName: the short name for the referenced assembly.

;Version [opcional]: a versão do assembly referenciado que contém o arquivo de recurso.;Version [optional]: the version of the referenced assembly that contains the resource file.É usada quando são carregados dois ou mais assemblies referenciados com o mesmo nome curto.This is used when two or more referenced assemblies with the same short name are loaded.

;PublicKey [opcional]: a chave pública que foi usada para assinar o assembly referenciado.;PublicKey [optional]: the public key that was used to sign the referenced assembly.É usada quando são carregados dois ou mais assemblies referenciados com o mesmo nome curto.This is used when two or more referenced assemblies with the same short name are loaded.

;component: especifica que o assembly referenciado é referenciado a partir do assembly local.;component: specifies that the assembly being referred to is referenced from the local assembly.

/Path: o nome do arquivo de recurso, incluindo o caminho, em relação à raiz da pasta de projeto do assembly referenciado./Path: the name of the resource file, including its path, relative to the root of the referenced assembly's project folder.

O exemplo a seguir mostra o URIURI pacote para XAMLXAML um arquivo de recurso que está localizado na raiz da pasta do projeto do assembly referenciado.The following example shows the pack URIURI for a XAMLXAML resource file that is located in the root of the referenced assembly's project folder.

pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml

O exemplo a seguir mostra o URIURI pacote para XAMLXAML um arquivo de recurso que está localizado em uma subpasta da pasta do projeto do assembly referenciado.The following example shows the pack URIURI for a XAMLXAML resource file that is located in a subfolder of the referenced assembly's project folder.

Observe que a sintaxe URIURI do pacote para arquivos de recurso de assembly referenciados pode ser usada somente com a autoridade Application:///.Note that the pack URIURI syntax for referenced assembly resource files can be used only with the application:/// authority.Por exemplo, não há suporte para o seguinte WPFWPFno.For example, the following is not supported in WPFWPF.

Caminho: O nome do arquivo de conteúdo, incluindo seu caminho relativo ao local do sistema de arquivos do assembly executável principal do aplicativo.Path: The name of the content file, including its path relative to the file system location of the application's main executable assembly.

URIs de pacote de site de origemSite of Origin Pack URIs

O pacote URIURI para um arquivo de site de origem usa a seguinte autoridade e caminho:The pack URIURI for a site of origin file uses the following authority and path:

Autoridade: siteoforigin:///.Authority: siteoforigin:///.

Caminho: O nome do arquivo de site de origem, incluindo seu caminho relativo ao local do qual o assembly executável foi iniciado.Path: The name of the site of origin file, including its path relative to the location from which the executable assembly was launched.

O exemplo a seguir mostra o URIURI pacote para XAMLXAML um arquivo de site de origem, armazenado no local do qual o assembly executável é iniciado.The following example shows the pack URIURI for a XAMLXAML site of origin file, stored in the location from which the executable assembly is launched.

pack://siteoforigin:,,,/SiteOfOriginFile.xaml

O exemplo a seguir mostra o URIURI pacote para XAMLXAML um arquivo de site de origem, armazenado na subpasta que é relativa ao local do qual o assembly executável do aplicativo é iniciado.The following example shows the pack URIURI for a XAMLXAML site of origin file, stored in subfolder that is relative to the location from which the application's executable assembly is launched.

Como os arquivos de site de origem não estão associados a assemblies, eles só podem ser referenciados com URIsURIso pacote absoluto.Because site of origin files are not associated with assemblies, they can only be referred to with absolute pack URIsURIs.

Por padrão, um pacote URIURI relativo é considerado relativo ao local da marcação ou código que contém a referência.By default, a relative pack URIURI is considered relative to the location of the markup or code that contains the reference.No entanto, se uma barra invertida à esquerda for usada URIURI , a referência de pacote relativa será considerada relativa à raiz do aplicativo.If a leading backslash is used, however, the relative pack URIURI reference is then considered relative to the root of the application.Considere, por exemplo, a estrutura de projeto a seguir.For example, consider the following project structure.

Esse pacote URIURI absoluto pode se referir a um arquivo de recurso no assembly local ou um arquivo de conteúdo.This absolute pack URIURI could refer to either a resource file in the local assembly or a content file.O mesmo é verdadeiro para o seguinte relativo URIURI.The same is true for the following relative URIURI.

Se um arquivo de recurso que corresponde ao caminho do pacote URIURI for encontrado, o caminho do pacote URIURI se referirá a um arquivo de recurso.If a resource file that matches the path of the pack URIURI is found, the path of the pack URIURI refers to a resource file.

Se o recurso não for encontrado, o criado Uri internamente será inválido.If the resource is not found, the internally created Uri is invalid.

Arquivos inseridos em assemblies referenciados: URIsURIs que os identificam são exclusivos porque incluem o nome do assembly referenciado e o ;component sufixo.Embedded files in referenced assemblies: URIsURIs that identify them are unique because they include both the name of the referenced assembly and the ;component suffix.

Arquivos de site de origem URIsURIs : que os identificam são exclusivos porque são os únicos arquivos que podem ser identificados pelo URIsURIs pacote que contêm a autoridade siteoforigin:///.Site of origin files: URIsURIs that identify them are unique because they are the only files that can be identified by pack URIsURIs that contain the siteoforigin:/// authority.

Uma simplificação que URIURI a resolução de pacote permite é que o código seja, de certa forma, independente dos locais dos arquivos de conteúdo e de recursos.One simplification that pack URIURI resolution allows is for code to be somewhat independent of the locations of resource and content files.Por exemplo, se você tiver um arquivo de recurso no assembly local que é reconfigurado para ser um arquivo de conteúdo, o pacote URIURI para o recurso permanecerá o mesmo, assim como o código que usa o URIURIpacote.For example, if you have a resource file in the local assembly that is reconfigured to be a content file, the pack URIURI for the resource remains the same, as does the code that uses the pack URIURI.

Essas propriedades podem ser definidas a partir de marcação e código.These properties can be set from both markup and code.Esta seção demonstra as construções básicas para ambos e, depois, mostra exemplos de cenários comuns.This section demonstrates the basic constructions for both and then shows examples of common scenarios.

Utilizando URIs de pacote em códigoUsing Pack URIs in Code

Você especifica um pacote URIURI no código instanciando a Uri classe e passando o pacote URIURI como um parâmetro para o construtor.You specify a pack URIURI in code by instantiating the Uri class and passing the pack URIURI as a parameter to the constructor.Isso é demonstrado no exemplo a seguir.This is demonstrated in the following example.

Você deve especificar somente Absolute ou Relative quando tiver certeza de que o pacote URIURI fornecido é um ou outro.You should specify only Absolute or Relative when you are certain that the provided pack URIURI is one or the other.Se você não souber o tipo de pacote URIURI usado, como quando um usuário insere um pacote URIURI em tempo de execução, use RelativeOrAbsolute em vez disso.If you don't know the type of pack URIURI that is used, such as when a user enters a pack URIURI at run time, use RelativeOrAbsolute instead.

Cenários comuns de URI de pacoteCommon Pack URI Scenarios

As seções anteriores discutiram como construir o Pack URIsURIs para identificar recursos, conteúdo e site de arquivos de origem.The preceding sections have discussed how to construct pack URIsURIs to identify resource, content, and site of origin files.No WPFWPF, essas construções são usadas de várias maneiras, e as seções a seguir abrangem vários usos comuns.In WPFWPF, these constructions are used in a variety of ways, and the following sections cover several common usages.

Especificando a interface do usuário para mostrar quando um aplicativo foi iniciadoSpecifying the UI to Show When an Application Starts

StartupUriEspecifica o primeiro Interface de UsuárioUI a ser mostrado quando WPFWPF um aplicativo é iniciado.StartupUri specifies the first Interface de UsuárioUI to show when a WPFWPF application is launched.Para aplicativos autônomos, Interface de UsuárioUI o pode ser uma janela, conforme mostrado no exemplo a seguir.For standalone applications, the Interface de UsuárioUI can be a window, as shown in the following example.

Se o aplicativo for um aplicativo autônomo e uma página for especificada com StartupUri, WPFWPF o abrirá um NavigationWindow para hospedar a página.If the application is a standalone application and a page is specified with StartupUri, WPFWPF opens a NavigationWindow to host the page.Para XBAPsXBAPso, a página é mostrada no navegador de host.For XBAPsXBAPs, the page is shown in the host browser.

Navegando até uma páginaNavigating to a Page

O exemplo a seguir mostra como navegar até uma página.The following example shows how to navigate to a page.

WPFWPFpermite que os aplicativos usem uma ampla variedade de tipos de mídia, todos os quais podem ser identificados e carregados URIsURIscom o pacote, conforme mostrado nos exemplos a seguir.allows applications to use a wide variety of media types, all of which can be identified and loaded with pack URIsURIs, as shown in the following examples.

Carregando um dicionário de recursos a partir do site de origemLoading a Resource Dictionary from the Site of Origin

Os dicionáriosResourceDictionaryde recursos () podem ser usados para dar suporte a temas de aplicativo.Resource dictionaries (ResourceDictionary) can be used to support application themes.Uma maneira de criar e gerenciar temas é criando diferentes temas como dicionários de recursos localizados em um site de origem do aplicativo.One way to create and manage themes is to create multiple themes as resource dictionaries that are located at an application's site of origin.Isso permite que temas sejam adicionados e atualizados sem recompilar e reimplantar um aplicativo.This allows themes to be added and updated without recompiling and redeploying an application.Esses dicionários de recursos podem ser identificados e carregados URIsURIsusando o pacote, que é mostrado no exemplo a seguir.These resource dictionaries can be identified and loaded using pack URIsURIs, which is shown in the following example.