URI di tipo pack in WPFPack URIs in WPF

In Windows Presentation Foundation (WPF), Uniform Resource Identifier (URI)uniform resource identifiers (URIs) vengono utilizzati per identificare e caricare i file in molti modi, inclusi i seguenti:In Windows Presentation Foundation (WPF), Uniform Resource Identifier (URI)uniform resource identifiers (URIs) are used to identify and load files in many ways, including the following:

  • Specifica il interfaccia utenteuser interface (UI) da visualizzare al primo avvio di un'applicazione.Specifying the interfaccia utenteuser interface (UI) to show when an application first starts.

  • Caricando immagini.Loading images.

  • Spostandosi sulle pagine.Navigating to pages.

  • Caricando file di dati non eseguibili.Loading non-executable data files.

Inoltre, URIURIs può essere utilizzato per identificare e caricare i file da varie posizioni, tra cui le operazioni seguenti:Furthermore, URIURIs can be used to identify and load files from a variety of locations, including the following:

  • L'assembly corrente.The current assembly.

  • Un assembly a cui si fa riferimento.A referenced assembly.

  • Un percorso relativo a un assembly.A location relative to an assembly.

  • L'applicazione del sito di origine.The application's site of origin.

Per fornire un meccanismo uniforme per l'identificazione e il caricamento di questi tipi di file da questi percorsi, WPFWPF sfrutta l'estensibilità del schema URI di tipo pack.To provide a consistent mechanism for identifying and loading these types of files from these locations, WPFWPF leverages the extensibility of the pack URI scheme. In questo argomento viene fornita una panoramica dello schema, viene illustrato come costruire pack URIURIs per un'ampia gamma di scenari, illustra absolute e relative URIURIs e URIURI risoluzione, prima che illustra come utilizzare pack URIURIs da entrambi markup e il codice.This topic provides an overview of the scheme, covers how to construct pack URIURIs for a variety of scenarios, discusses absolute and relative URIURIs and URIURI resolution, before showing how to use pack URIURIs from both markup and code.

Schema URI di tipo packThe Pack URI Scheme

Il pacchetto di URIURI lo schema viene utilizzato il Open Packaging Conventions specifica (OPC), che descrive un modello per l'organizzazione e l'identificazione del contenuto.The pack URIURI scheme is used by the Open Packaging Conventions (OPC) specification, which describes a model for organizing and identifying content. Gli elementi principali di questo modello sono pacchetti e le parti, in cui un pacchetto è un contenitore logico per uno o più logica parti.The key elements of this model are packages and parts, where a package is a logical container for one or more logical parts. La figura seguente illustra questo concetto.The following figure illustrates this concept.

Diagramma di pacchetti e partiPackage and Parts diagram

Per identificare le parti, la specifica OPC sfrutta l'estensibilità dello standard RFC 2396 (Uniform Resource Identifiers (URI): sintassi generica) per definire il pack URIURI schema.To identify parts, the OPC specification leverages the extensibility of RFC 2396 (Uniform Resource Identifiers (URI): Generic Syntax) to define the pack URIURI scheme.

Lo schema specificato da un URIURI è definito dal prefisso; http, ftp e file sono esempi noti.The scheme that is specified by a URIURI is defined by its prefix; http, ftp, and file are well-known examples. Il pacchetto URIURI schema utilizza "pack" come schema e contiene due componenti: autorità e percorso.The pack URIURI scheme uses "pack" as its scheme, and contains two components: authority and path. Di seguito è riportato il formato per un pacchetto URIURI.The following is the format for a pack URIURI.

Service Pack: / /autorità/percorsopack://authority/path

Il autorità specifica il tipo di pacchetto che è contenuta una parte, mentre il percorso specifica il percorso di una parte all'interno di un pacchetto.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.

Questo concetto è illustrato nella figura seguente:This concept is illustrated by the following figure:

Relazioni tra pacchetto, autorità e percorsoRelationship among package, authority, and path

Pacchetti e parti sono analoghi ad applicazioni e file, dove un'applicazione (pacchetto) può includere uno o più file (parti), tra cui:Packages and parts are analogous to applications and files, where an application (package) can include one or more files (parts), including:

  • File di risorse compilati nell'assembly locale.Resource files that are compiled into the local assembly.

  • File di risorse compilati in un assembly a cui si fa riferimento.Resource files that are compiled into a referenced assembly.

  • File di risorse compilati in un assembly contenente un riferimento.Resource files that are compiled into a referencing assembly.

  • File di contenuto.Content files.

  • File del sito di origine.Site of origin files.

Per accedere a questi tipi di file, WPFWPF supporta due autorità: application: / / / e siteoforigin: / / /.To access these types of files, WPFWPF supports two authorities: application:/// and siteoforigin:///. L'autorità application:/// identifica i file di dati dell'applicazione noti al momento della compilazione, inclusi file di risorse e di contenuto.The application:/// authority identifies application data files that are known at compile time, including resource and content files. L'autorità siteoforigin:/// identifica i file del sito di origine.The siteoforigin:/// authority identifies site of origin files. La figura seguente illustra l'ambito di ciascuna autorità.The scope of each authority is shown in the following figure.

Diagramma dell'URI di tipo packPack URI diagram

Nota

Il componente autorità di un pacchetto di URIURI è incorporato URIURI che punta a un pacchetto e deve essere conforme allo standard RFC 2396.The authority component of a pack URIURI is an embedded URIURI that points to a package and must conform to RFC 2396. Inoltre, il carattere "/" deve essere sostituito con il carattere "," e i caratteri riservati quali "%" e "?" devono essere preceduti da un carattere di escape.Additionally, the "/" character must be replaced with the "," character, and reserved characters such as "%" and "?" must be escaped. Per informazioni dettagliate, vedere la specifica OPC.See the OPC for details.

Le sezioni seguenti illustrano come costruire pack URIURIs utilizzando queste due autorità in combinazione con i percorsi appropriati per l'identificazione delle risorse e il contenuto del sito di origine.The following sections explain how to construct pack URIURIs using these two authorities in conjunction with the appropriate paths for identifying resource, content, and site of origin files.

URI di tipo pack di file di risorseResource File Pack URIs

File di risorse sono configurati come MSBuildMSBuild Resource gli elementi e vengono compilati in assembly.Resource files are configured as MSBuildMSBuildResource items and are compiled into assemblies. WPFWPF supporta la costruzione di pack URIURIs che può essere utilizzato per identificare i file di risorse che vengono compilati nell'assembly locale o in un assembly cui viene fatto riferimento dall'assembly locale. supports the construction of pack URIURIs 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.

File di risorse dell'assembly localeLocal Assembly Resource File

Il pacchetto di URIURI per una risorsa file compilato nell'assembly locale utilizza autorità e il percorso seguente:The pack URIURI for a resource file that is compiled into the local assembly uses the following authority and path:

  • Autorità: application:///.Authority: application:///.

  • Percorso: nome del file di risorse che include il percorso relativo alla radice della cartella del progetto dell'assembly locale.Path: The name of the resource file, including its path, relative to the local assembly project folder root.

Nell'esempio seguente viene illustrato il pack URIURI per un XAMLXAML file di risorse che si trova nella radice della cartella di progetto dell'assembly locale.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

Nell'esempio seguente viene illustrato il pack URIURI per un XAMLXAML file di risorse che si trova in una sottocartella della cartella del progetto dell'assembly locale.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.

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

File di risorse dell'assembly a cui si fa riferimentoReferenced Assembly Resource File

Il pacchetto di URIURI per una risorsa file che viene compilato in un assembly di riferimento utilizza autorità e il percorso seguente:The pack URIURI for a resource file that is compiled into a referenced assembly uses the following authority and path:

  • Autorità: application:///.Authority: application:///.

  • Percorso: nome di un file di risorse compilato in un assembly a cui si fa riferimento.Path: The name of a resource file that is compiled into a referenced assembly. Il percorso deve essere conforme al formato seguente:The path must conform to the following format:

    AssemblyShortName{; Versione] {; PublicKey]; component /percorsoAssemblyShortName{;Version]{;PublicKey];component/Path

    • NomeBreveAssembly: nome breve dell'assembly a cui si fa riferimento.AssemblyShortName: the short name for the referenced assembly.

    • ;Versione [facoltativo]: versione dell'assembly a cui si fa riferimento che contiene il file di risorse.;Version [optional]: the version of the referenced assembly that contains the resource file. Viene usato quando vengono caricati due o più assembly a cui si fa riferimento con lo stesso nome breve.This is used when two or more referenced assemblies with the same short name are loaded.

    • ;ChiavePubblica [facoltativo]: chiave pubblica usata per firmare l'assembly a cui si fa riferimento.;PublicKey [optional]: the public key that was used to sign the referenced assembly. Viene usato quando vengono caricati due o più assembly a cui si fa riferimento con lo stesso nome breve.This is used when two or more referenced assemblies with the same short name are loaded.

    • ;component: specifica che il riferimento all'assembly avviene dall'assembly locale.;component: specifies that the assembly being referred to is referenced from the local assembly.

    • /Percorso: nome del file di risorse, contenente il percorso relativo alla radice della cartella del progetto dell'assembly a cui si fa riferimento./Path: the name of the resource file, including its path, relative to the root of the referenced assembly's project folder.

Nell'esempio seguente viene illustrato il pack URIURI per un XAMLXAML file di risorse che si trova nella radice della cartella di progetto dell'assembly di riferimento.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

Nell'esempio seguente viene illustrato il pack URIURI per un XAMLXAML file di risorse che si trova in una sottocartella della cartella del progetto dell'assembly di riferimento.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.

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

Nell'esempio seguente viene illustrato il pack URIURI per un XAMLXAML file di risorse che si trova nella cartella radice della cartella di progetto un riferimento, specifici della versione dell'assembly.The following example shows the pack URIURI for a XAMLXAML resource file that is located in the root folder of a referenced, version-specific assembly's project folder.

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

Si noti che il pacchetto URIURI sintassi per i file di risorse di assembly di riferimento può essere utilizzata solo con l'applicazione: / / / autorità.Note that the pack URIURI syntax for referenced assembly resource files can be used only with the application:/// authority. Ad esempio, le operazioni seguenti non sono supportata WPFWPF.For example, the following is not supported in WPFWPF.

pack://siteoforigin:,,,/SomeAssembly;component/ResourceFile.xaml

URI di tipo pack di file di contenutoContent File Pack URIs

Il pacchetto di URIURI per un file di contenuto Usa autorità e il percorso seguente:The pack URIURI for a content file uses the following authority and path:

  • Autorità: application:///.Authority: application:///.

  • Percorso: nome del file di contenuto contenente il percorso relativo alla posizione del file system del principale assembly eseguibile dell'applicazione.Path: The name of the content file, including its path relative to the file system location of the application's main executable assembly.

Nell'esempio seguente viene illustrato il pack URIURI per un XAMLXAML file di contenuto, si trova nella stessa cartella dell'assembly eseguibile.The following example shows the pack URIURI for a XAMLXAML content file, located in the same folder as the executable assembly.

pack://application:,,,/ContentFile.xaml

Nell'esempio seguente viene illustrato il pack URIURI per un XAMLXAML file di contenuto, si trova in una sottocartella relativo all'assembly eseguibile dell'applicazione.The following example shows the pack URIURI for a XAMLXAML content file, located in a subfolder that is relative to the application's executable assembly.

pack://application:,,,/Subfolder/ContentFile.xaml

Nota

Non è possibile spostarsi su file di contenuto HTMLHTML.HTMLHTML content files cannot be navigated to. Il URIURI schema supporta solo lo spostamento di HTMLHTML file che si trovano nel sito di origine.The URIURI scheme only supports navigation to HTMLHTML files that are located at the site of origin.

URI di tipo pack del sito di origineSite of Origin Pack URIs

Il pacchetto di URIURI per un sito di origine file utilizza autorità e il percorso seguente:The pack URIURI for a site of origin file uses the following authority and path:

  • Autorità: siteoforigin:///.Authority: siteoforigin:///.

  • Percorso: nome del file del sito di origine contenente il percorso relativo alla posizione da cui è stato avviato l'assembly eseguibile.Path: The name of the site of origin file, including its path relative to the location from which the executable assembly was launched.

Nell'esempio seguente viene illustrato il pack URIURI per un XAMLXAML file sito di origine, archiviato nella posizione da cui viene avviato l'assembly eseguibile.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

Nell'esempio seguente viene illustrato il pack URIURI per un XAMLXAML file sito di origine, archiviato in una sottocartella, è relativo al percorso da cui viene avviato l'assembly eseguibile dell'applicazione.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.

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

File di pagingPage Files

XAMLXAML i file che sono configurati come MSBuildMSBuild Page gli elementi vengono compilati in assembly nello stesso modo come file di risorse. files that are configured as MSBuildMSBuildPage items are compiled into assemblies in the same way as resource files. Di conseguenza, MSBuildMSBuild Page elementi possono essere identificati utilizzando pack URIURIs per i file di risorse.Consequently, MSBuildMSBuildPage items can be identified using pack URIURIs for resource files.

I tipi di XAMLXAML file che sono in genere configurati come MSBuildMSBuild Page gli elementi hanno uno dei seguenti elementi radice:The types of XAMLXAML files that are commonly configured as MSBuildMSBuildPage items have one of the following as their root element:

URI di tipo pack assoluti e relativiAbsolute vs. Relative Pack URIs

Un pacchetto completo URIURI include lo schema, l'autorità e percorso, e viene considerato un pack assoluto URIURI.A fully qualified pack URIURI includes the scheme, the authority, and the path, and it is considered an absolute pack URIURI. Per semplificare il lavoro per gli sviluppatori, XAMLXAML elementi consentono di impostare gli attributi appropriati con un relativo pack URIURI, che include solo il percorso.As a simplification for developers, XAMLXAML elements typically allow you to set appropriate attributes with a relative pack URIURI, which includes only the path.

Ad esempio, si consideri il seguente pack assoluto URIURI per un file di risorse nell'assembly locale.For example, consider the following absolute pack URIURI for a resource file in the local assembly.

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

Il relativo pacchetto URIURI che fa riferimento a questa risorsa file potrebbe essere la seguente.The relative pack URIURI that refers to this resource file would be the following.

/ResourceFile.xaml

Nota

Poiché il file di origine del sito non sono associati agli assembly, è possibile solo possibile farvi riferimento assoluto Pack URIURIs.Because site of origin files are not associated with assemblies, they can only be referred to with absolute pack URIURIs.

Per impostazione predefinita, un Service pack relativo URIURI viene considerato relativo alla posizione del markup o del codice che contiene il riferimento.By default, a relative pack URIURI is considered relative to the location of the markup or code that contains the reference. Se viene utilizzata una barra rovesciata iniziale, tuttavia, il relativo pacchetto URIURI riferimento viene quindi considerato relativo alla radice dell'applicazione.If a leading backslash is used, however, the relative pack URIURI reference is then considered relative to the root of the application. Si consideri ad esempio la struttura di progetto seguente.For example, consider the following project structure.

App.xaml

Page2.xaml

\SubFolder

+ Page1.xaml

+ Page2.xaml

Se Page1 contiene un URIURI che fa riferimento radice\SubFolder\Page2.xaml, il riferimento può utilizzare il seguente pack relativo URIURI.If Page1.xaml contains a URIURI that references Root\SubFolder\Page2.xaml, the reference can use the following relative pack URIURI.

Page2.xaml

Se Page1 contiene un URIURI che fa riferimento radice\Page2.xaml, il riferimento può utilizzare il seguente pack relativo URIURI.If Page1.xaml contains a URIURI that references Root\Page2.xaml, the reference can use the following relative pack URIURI.

/Page2.xaml

Risoluzione degli URI di tipo packPack URI Resolution

Il formato del pacchetto URIURIs rende possibile per pack URIURIs per diversi tipi di file abbia lo stesso aspetto.The format of pack URIURIs makes it is possible for pack URIURIs for different types of files to look the same. Ad esempio, si consideri il seguente pack assoluto URIURI.For example, consider the following absolute pack URIURI.

pack://application:,,,/ResourceOrContentFile.xaml

Questo pacchetto assoluto URIURI potrebbe fare riferimento a un file di risorse nell'assembly locale o un file di contenuto.This absolute pack URIURI could refer to either a resource file in the local assembly or a content file. Lo stesso vale per il seguente relativo URIURI.The same is true for the following relative URIURI.

/ResourceOrContentFile.xaml

Per determinare il tipo di file di un pacchetto di URIURI fa riferimento, WPFWPF risolve URIURIs per i file di risorse negli assembly locali e i file di contenuto utilizzando la seguente euristica:In order to determine the type of file that a pack URIURI refers to, WPFWPF resolves URIURIs for resource files in local assemblies and content files by using the following heuristics:

  1. I metadati dell'assembly per verificare la presenza di un AssemblyAssociatedContentFileAttribute attributo che corrisponda al pack URIURI.Probe the assembly metadata for an AssemblyAssociatedContentFileAttribute attribute that matches the pack URIURI.

  2. Se il AssemblyAssociatedContentFileAttribute attributo viene trovato, il percorso del pacchetto di URIURI fa riferimento a un file di contenuto.If the AssemblyAssociatedContentFileAttribute attribute is found, the path of the pack URIURI refers to a content file.

  3. Se il AssemblyAssociatedContentFileAttribute attributo non viene trovato, esaminare i file di set di risorse che vengono compilati in assembly locale.If the AssemblyAssociatedContentFileAttribute attribute is not found, probe the set resource files that are compiled into the local assembly.

  4. Se un file di risorse che corrisponde al percorso del pacchetto di URIURI viene trovato, il percorso del pacchetto di URIURI fa riferimento a un file di risorse.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.

  5. Se la risorsa non viene trovato, internamente creato Uri non è valido.If the resource is not found, the internally created Uri is invalid.

URIURI la risoluzione non è applicabile per URIURIs che fanno riferimento al seguente: resolution does not apply for URIURIs that refer to the following:

  • File di dati negli assembly di riferimento: questi tipi di file non supportati da WPFWPF.Content files in referenced assemblies: these file types are not supported by WPFWPF.

  • File incorporati negli assembly di riferimento: URIURIs che li identificano sono univoci, perché includono sia il nome dell'assembly di riferimento e ;component suffisso.Embedded files in referenced assemblies: URIURIs that identify them are unique because they include both the name of the referenced assembly and the ;component suffix.

  • Sito di origine: URIURIs che li identificano sono univoci in quanto sono i soli file che possono essere identificati da pack URIURIs che contengono il siteoforigin: / / / autorità.Site of origin files: URIURIs that identify them are unique because they are the only files that can be identified by pack URIURIs that contain the siteoforigin:/// authority.

Una semplificazione di tipo pack URIURI risoluzione consente al codice di essere indipendente dai percorsi dei file di risorse e dei file.One simplification that pack URIURI resolution allows is for code to be somewhat independent of the locations of resource and content files. Ad esempio, se si dispone di un file di risorse nell'assembly locale che viene riconfigurato in modo da un file di contenuto, il pacchetto di URIURI per la risorsa rimane lo stesso, anche il codice che utilizza tale URIURI.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.

Programmazione con URI di tipo packProgramming with Pack URIs

Molti WPFWPF classi implementano proprietà che possono essere impostate con Service pack URIURIs, tra cui:Many WPFWPF classes implement properties that can be set with pack URIURIs, including:

Queste proprietà possono essere impostate da markup e codice.These properties can be set from both markup and code. Questa sezione illustra le costruzioni di base per entrambi e quindi riporta esempi di scenari comuni.This section demonstrates the basic constructions for both and then shows examples of common scenarios.

Uso di URI di tipo pack nel markupUsing Pack URIs in Markup

Un pacchetto di URIURI viene specificato nel markup impostando l'elemento di un attributo con il pacchetto URIURI.A pack URIURI is specified in markup by setting the element of an attribute with the pack URIURI. Ad esempio:For example:

<element attribute="pack://application:,,,/File.xaml" />

Tabella 1 sono illustrati i vari pack assoluto URIURIs che è possibile specificare nel markup.Table 1 illustrates the various absolute pack URIURIs that you can specify in markup.

Tabella 1: URI di tipo pack assoluti nel markupTable 1: Absolute Pack URIs in Markup

FileFile Pack assoluto URIURIAbsolute pack URIURI
File di risorse - assembly localeResource file - local assembly "pack://application:,,,/ResourceFile.xaml"
File di risorse in una sottocartella - assembly localeResource file in subfolder - local assembly "pack://application:,,,/Subfolder/ResourceFile.xaml"
File di risorse - assembly a cui si fa riferimentoResource file - referenced assembly "pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml"
File di risorse in una sottocartella dell'assembly a cui si fa riferimentoResource file in subfolder of referenced assembly "pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml"
File di risorse in un assembly a cui si fa riferimento con versioneResource file in versioned referenced assembly "pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml"
File di contenutoContent file "pack://application:,,,/ContentFile.xaml"
File di contenuto in una sottocartellaContent file in subfolder "pack://application:,,,/Subfolder/ContentFile.xaml"
File del sito di origineSite of origin file "pack://siteoforigin:,,,/SOOFile.xaml"
File del sito di origine in una sottocartellaSite of origin file in subfolder "pack://siteoforigin:,,,/Subfolder/SOOFile.xaml"

Tabella 2 sono illustrati i vari pack relativi URIURIs che è possibile specificare nel markup.Table 2 illustrates the various relative pack URIURIs that you can specify in markup.

Tabella 2: URI di tipo pack relativi nel markupTable 2: Relative Pack URIs in Markup

FileFile Pack relativo URIURIRelative pack URIURI
File di risorse nell'assembly localeResource file in local assembly "/ResourceFile.xaml"
File di risorse in una sottocartella dell'assembly localeResource file in subfolder of local assembly "/Subfolder/ResourceFile.xaml"
File di risorse nell'assembly a cui si fa riferimentoResource file in referenced assembly "/ReferencedAssembly;component/ResourceFile.xaml"
File di risorse in una sottocartella dell'assembly a cui si fa riferimentoResource file in subfolder of referenced assembly "/ReferencedAssembly;component/Subfolder/ResourceFile.xaml"
File di contenutoContent file "/ContentFile.xaml"
File di contenuto in una sottocartellaContent file in subfolder "/Subfolder/ContentFile.xaml"

Uso di URI di tipo pack nel codiceUsing Pack URIs in Code

Specificare un pacchetto di URIURI nel codice creando il Uri classe e passare il URIURI come parametro al costruttore.You specify a pack URIURI in code by instantiating the Uri class and passing the pack URIURI as a parameter to the constructor. come illustrato nell'esempio seguente.This is demonstrated in the following example.

Uri uri = new Uri("pack://application:,,,/File.xaml");  

Per impostazione predefinita, il Uri classe considera pack URIURIs come assoluti.By default, the Uri class considers pack URIURIs to be absolute. Di conseguenza, viene generata un'eccezione quando un'istanza di Uri classe viene creata con un relativo pack URIURI.Consequently, an exception is raised when an instance of the Uri class is created with a relative pack URIURI.

Uri uri = new Uri("/File.xaml");  

Fortunatamente, la Uri(String, UriKind) overload di Uri costruttore della classe accetta un parametro di tipo UriKind consente di specificare se un pacchetto di URIURI è assoluto o relativo.Fortunately, the Uri(String, UriKind) overload of the Uri class constructor accepts a parameter of type UriKind to allow you to specify whether a pack URIURI is either absolute or relative.

// Absolute URI (default)  
Uri absoluteUri = new Uri("pack://application:,,,/File.xaml", UriKind.Absolute);  
// Relative URI  
Uri relativeUri = new Uri("/File.xaml",   
                        UriKind.Relative);  

È necessario specificare solo Absolute o Relative quando si è certi che il pacchetto fornito URIURI è uno o l'altro.You should specify only Absolute or Relative when you are certain that the provided pack URIURI is one or the other. Se non si conosce il tipo di pacchetto URIURI utilizzato, ad esempio quando un utente immette un pack URIURI in fase di esecuzione, utilizzare RelativeOrAbsolute invece.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.

// Relative or Absolute URI provided by user via a text box  
TextBox userProvidedUriTextBox = new TextBox();  
Uri uri = new Uri(userProvidedUriTextBox.Text, UriKind.RelativeOrAbsolute);  

Tabella 3 sono illustrati i vari pack relativi URIURIs che è possibile specificare nel codice utilizzando System.Uri.Table 3 illustrates the various relative pack URIURIs that you can specify in code by using System.Uri.

Tabella 3: URI di tipo pack assoluti nel codiceTable 3: Absolute Pack URIs in Code

FileFile Pack assoluto URIURIAbsolute pack URIURI
File di risorse - assembly localeResource file - local assembly Uri uri = new Uri("pack://application:,,,/ResourceFile.xaml", UriKind.Absolute);
File di risorse in una sottocartella - assembly localeResource file in subfolder - local assembly Uri uri = new Uri("pack://application:,,,/Subfolder/ResourceFile.xaml", UriKind.Absolute);
File di risorse - assembly a cui si fa riferimentoResource file - referenced assembly Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Absolute);
File di risorse in una sottocartella dell'assembly a cui si fa riferimentoResource file in subfolder of referenced assembly Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Absolute);
File di risorse in un assembly a cui si fa riferimento con versioneResource file in versioned referenced assembly Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml", UriKind.Absolute);
File di contenutoContent file Uri uri = new Uri("pack://application:,,,/ContentFile.xaml", UriKind.Absolute);
File di contenuto in una sottocartellaContent file in subfolder Uri uri = new Uri("pack://application:,,,/Subfolder/ContentFile.xaml", UriKind.Absolute);
File del sito di origineSite of origin file Uri uri = new Uri("pack://siteoforigin:,,,/SOOFile.xaml", UriKind.Absolute);
File del sito di origine in una sottocartellaSite of origin file in subfolder Uri uri = new Uri("pack://siteoforigin:,,,/Subfolder/SOOFile.xaml", UriKind.Absolute);

Tabella 4 sono illustrati i vari pack relativi URIURIs che è possibile specificare nel codice utilizzando System.Uri.Table 4 illustrates the various relative pack URIURIs that you can specify in code using System.Uri.

Tabella 4: URI di tipo pack relativi nel codiceTable 4: Relative Pack URIs in Code

FileFile Pack relativo URIURIRelative pack URIURI
File di risorse - assembly localeResource file - local assembly Uri uri = new Uri("/ResourceFile.xaml", UriKind.Relative);
File di risorse in una sottocartella - assembly localeResource file in subfolder - local assembly Uri uri = new Uri("/Subfolder/ResourceFile.xaml", UriKind.Relative);
File di risorse - assembly a cui si fa riferimentoResource file - referenced assembly Uri uri = new Uri("/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Relative);
File di risorse in una sottocartella - assembly a cui si fa riferimentoResource file in subfolder - referenced assembly Uri uri = new Uri("/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Relative);
File di contenutoContent file Uri uri = new Uri("/ContentFile.xaml", UriKind.Relative);
File di contenuto in una sottocartellaContent file in subfolder Uri uri = new Uri("/Subfolder/ContentFile.xaml", UriKind.Relative);

Scenari comuni di URI PackCommon Pack URI Scenarios

Nelle sezioni precedenti hanno illustrato come costruire pack URIURIs per identificare risorse e sito di origine.The preceding sections have discussed how to construct pack URIURIs to identify resource, content, and site of origin files. In WPFWPF, queste costruzioni vengono utilizzate in diversi modi e le sezioni seguenti illustrano alcuni utilizzi comuni.In WPFWPF, these constructions are used in a variety of ways, and the following sections cover several common usages.

Specifica dell'interfaccia utente da visualizzare all'avvio di un'applicazioneSpecifying the UI to Show When an Application Starts

StartupUri Specifica il primo Interfaccia utenteUI da visualizzare quando un WPFWPF viene avviata l'applicazione.StartupUri specifies the first Interfaccia utenteUI to show when a WPFWPF application is launched. Per le applicazioni autonome di Interfaccia utenteUI può essere una finestra, come illustrato nell'esempio seguente.For standalone applications, the Interfaccia utenteUI can be a window, as shown in the following example.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    StartupUri="MainWindow.xaml" />

Applicazioni autonome e applicazioni browser XAML (XBAP)XAML browser applications (XBAPs) può specificare anche una pagina come l'interfaccia utente iniziale, come illustrato nell'esempio seguente.Standalone applications and applicazioni browser XAML (XBAP)XAML browser applications (XBAPs) can also specify a page as the initial UI, as shown in the following example.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    StartupUri="HomePage.xaml" />

Se l'applicazione è un'applicazione autonoma e una pagina viene specificata con StartupUri, WPFWPF apre un NavigationWindow per ospitare la pagina.If the application is a standalone application and a page is specified with StartupUri, WPFWPF opens a NavigationWindow to host the page. Per XBAPXBAPs, la pagina viene visualizzata nel browser host.For XBAPXBAPs, the page is shown in the host browser.

L'esempio seguente illustra come spostarsi su una pagina.The following example shows how to navigate to a page.

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  WindowTitle="Page With Hyperlink"
  WindowWidth="250"
  WindowHeight="250">
<Hyperlink NavigateUri="UriOfPageToNavigateTo.xaml">
  Navigate to Another Page
</Hyperlink>
</Page>

Per ulteriori informazioni sulle diverse modalità per spostarsi in WPFWPF, vedere Navigation Overview.For more information on the various ways to navigate in WPFWPF, see Navigation Overview.

Specifica dell'icona di una finestraSpecifying a Window Icon

L'esempio seguente illustra come usare un URI per specificare l'icona di una finestra.The following example shows how to use a URI to specify a window's icon.

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="SDKSample.MainWindow"
	Icon="WPFIcon1.ico">
</Window>

Per altre informazioni, vedere Icon.For more information, see Icon.

Caricamento di file di immagine, audio e videoLoading Image, Audio, and Video Files

WPFWPF consente alle applicazioni di utilizzare un'ampia gamma di tipi di supporti, ognuno dei quali possono essere identificati e caricato con Service pack URIURIs, come illustrato negli esempi seguenti. allows applications to use a wide variety of media types, all of which can be identified and loaded with pack URIURIs, as shown in the following examples.

<MediaElement Stretch="Fill" LoadedBehavior="Play" Source="pack://siteoforigin:,,,/Media/bee.wmv" />
<MediaElement Stretch="Fill" LoadedBehavior="Play" Source="pack://siteoforigin:,,,/Media/ringin.wav" />
<Image Source="Images/Watermark.png" />

Per ulteriori informazioni sull'utilizzo di contenuti multimediali, vedere grafica e contenuti multimediali.For more information on working with media content, see Graphics and Multimedia.

Caricamento di un dizionario risorse dal sito di origineLoading a Resource Dictionary from the Site of Origin

I dizionari risorse (ResourceDictionary) può essere utilizzata per supportare i temi dell'applicazione.Resource dictionaries (ResourceDictionary) can be used to support application themes. Un modo per creare e gestire i temi consiste nel creare più temi come dizionari risorse che si trovano nel sito di origine di un'applicazione.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. In questo modo è possibile aggiungere e aggiornare i temi senza ricompilare e ridistribuire un'applicazione.This allows themes to be added and updated without recompiling and redeploying an application. Questi dizionari risorse possono essere identificati e caricati utilizzando pack URIURIs, mostrato nell'esempio seguente.These resource dictionaries can be identified and loaded using pack URIURIs, which is shown in the following example.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    StartupUri="HomePage.xaml">
  <Application.Resources>
    <ResourceDictionary Source="pack://siteoforigin:,,,/PageTheme.xaml" />
  </Application.Resources>
</Application>

Per una panoramica dei temi in WPFWPF, vedere stili e modelli.For an overview of themes in WPFWPF, see Styling and Templating.

Vedere ancheSee Also

File di dati e di risorse dell'applicazione WPFWPF Application Resource, Content, and Data Files