Estensione del markup DynamicResource

Aggiornamento: novembre 2007

Fornisce un valore per tutti gli attributi della proprietà XAML rinviando tale valore come riferimento per una risorsa definita. Il comportamento di ricerca per tale risorsa è analogo alla ricerca in fase di esecuzione.

Utilizzo della sintassi XAML per gli attributi

<object property="{DynamicResource key}" .../>

Utilizzo della sintassi XAML per gli elementi proprietà

<object>
  <object.property>
    <DynamicResource ResourceKey="key" .../>
  </object.property>
</object>

Valori XAML

key

Chiave della risorsa richiesta. Questa chiave è stata inizialmente assegnata da Attributo x:Key se una risorsa è stata creata nel markup oppure è stata fornita come parametro key in caso di chiamata a ResourceDictionary.Add se la risorsa è stata creata nel codice.

Note

Un oggetto DynamicResource crea un'espressione temporanea durante la compilazione iniziale, pertanto la ricerca delle risorse viene rinviata finché il valore della risorsa richiesta non risulta effettivamente necessario per costruire un oggetto. Questa situazione potrebbe verificarsi dopo il caricamento della pagina XAML. Il valore della risorsa sarà individuato in base alla ricerca della chiave in tutti i dizionari risorse attivi, iniziando dall'ambito della pagina corrente e sarà sostituito con l'espressione del segnaposto della compilazione.

Nota importante:

In termini di precedenza della proprietà di dipendenza, un'espressione DynamicResource è equivalente alla posizione in cui viene applicato il riferimento di risorsa dinamica. Se viene impostato un valore locale per una proprietà che in precedenza disponeva di un'espressione DynamicResource come valore locale, l'oggetto DynamicResource viene completamente rimosso. Per informazioni dettagliate, vedere Precedenza del valore della proprietà di dipendenza.

Alcuni scenari di accesso alla risorsa sono particolarmente appropriati per DynamicResource in contrapposizione a Estensione del markup StaticResource. Per una descrizione sui relativi pregi e sulle implicazioni in termini di prestazioni di DynamicResource e StaticResource, vedere Cenni preliminari sulle risorse.

L'oggetto ResourceKey specificato deve corrispondere a una risorsa esistente determinata da un attributo Attributo x:Key a un certo livello della pagina, dell'applicazione; dei temi dei controlli e delle risorse esterne disponibili oppure delle risorse di sistema, e la ricerca delle risorse verrà eseguita in quell'ordine. Per ulteriori informazioni sulla ricerca delle risorse statiche e dinamiche, vedere Cenni preliminari sulle risorse.

Una chiave di risorsa può essere una qualsiasi stringa definita in Grammatica XamlName. Una chiave di risorsa può anche essere costituita da altri tipi di oggetto, ad esempio Type. Una chiave Type è fondamentale per il modo in cui i temi possono applicare stili ai controlli. Per ulteriori informazioni, vedere Cenni preliminari sulla modifica di controlli.

Le API per la ricerca dei valori delle risorse, ad esempio FindResource, seguono la stessa logica di ricerca delle risorse utilizzata da DynamicResource.

Un metodo alternativo per fare riferimento a una risorsa è come Estensione del markup StaticResource.

La sintassi per gli attributi è quella più comunemente utilizzata con questa estensione di markup. Il token di stringa fornito dopo la stringa dell'identificatore DynamicResource viene assegnato come valore ResourceKey della classe dell'estensione DynamicResourceExtension sottostante.

L'oggetto DynamicResource può essere utilizzato nella sintassi per gli elementi oggetto. In questo caso, è necessario specificare il valore della proprietà ResourceKey.

L'oggetto DynamicResource può anche essere adoperato per un uso dettagliato degli attributi che consente di specificare la proprietà ResourceKey come coppia proprietà=valore:

<object property="{DynamicResource ResourceKey=key}" .../>

L'utilizzo dettagliato spesso è utile per estensioni con più proprietà da impostare o nel caso in cui alcune proprietà siano facoltative. Poiché DynamicResource presenta una sola proprietà da impostare, obbligatoria, l'utilizzo dettagliato non è tipico.

Nell'implementazione del processore XAML WPF, la gestione di questa estensione di markup viene definita dalla classe DynamicResourceExtension.

DynamicResource è un'estensione di markup. Le estensioni di markup in genere vengono implementate quando i valori dell'attributo dei caratteri escape non devono essere valori letterali o nomi di gestori e questo requisito è più globale del semplice utilizzo di convertitori dei tipi su alcuni tipi o proprietà. Tutte le estensioni di markup di XAML utilizzano i caratteri { e } nella relativa sintassi per gli attributi e grazie a questa convenzione il processore XAML riconosce che l'attributo deve essere elaborato da un'estensione di markup. Per ulteriori informazioni, vedere Estensioni di markup e XAML.

Vedere anche

Concetti

Cenni preliminari sulle risorse

Risorse e codice

Cenni preliminari su XAML

Estensioni di markup e XAML

Estensioni di markup e XAML

Riferimenti

Attributo x:Key

Estensione del markup StaticResource