Condividi tramite


Estensione di markup DynamicResource

Fornisce un valore per qualsiasi attributo della proprietà XAML rinviando tale valore come riferimento a una risorsa definita. Il comportamento di ricerca per tale risorsa è analogo a quello della ricerca in fase di esecuzione.

Utilizzo degli attributi XAML

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

Utilizzo dell'elemento della proprietà XAML

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

Valori XAML

Valore Descrizione
key Chiave per la risorsa richiesta. Questa chiave è stata inizialmente assegnata dalla direttiva x:Key se una risorsa è stata creata nel markup, o è stata fornita come parametro key durante la chiamata a ResourceDictionary.Add se la risorsa è stata creata nel codice.

Osservazioni

Un DynamicResource creerà un'espressione temporanea durante la compilazione iniziale e quindi rinvierà la ricerca delle risorse fino a quando il valore della risorsa richiesto non è effettivamente necessario per costruire un oggetto. Questo può essere potenzialmente dopo il caricamento della pagina XAML. Il valore della risorsa sarà trovato tramite la ricerca di chiavi in tutti i dizionari di risorse attivi a partire dall'ambito della pagina corrente e verrà sostituito con l'espressione segnaposto durante la compilazione.

Importante

In termini di precedenza della proprietà di dipendenza, un'espressione DynamicResource equivale alla posizione in cui viene applicato il riferimento di risorsa dinamica. Se si imposta un valore locale per una proprietà che in precedenza aveva un'espressione DynamicResource come valore locale, il DynamicResource viene rimosso completamente. Per informazioni dettagliate, vedere Precedenza del Valore della Proprietà di Dipendenza.

Alcuni scenari di accesso alle risorse sono particolarmente appropriati per DynamicResource anziché per un'estensione di markup StaticResource . Consultare le risorse XAML per una discussione sui meriti e sulle prestazioni relativi di DynamicResource e StaticResource.

Il ResourceKey specificato deve corrispondere a una risorsa esistente specificata dalla direttiva x:Key x:Key a un certo livello della pagina, dell'applicazione, dei temi di controllo disponibili, delle risorse esterne o delle risorse di sistema, e la ricerca della risorsa verrà eseguita in tale ordine. Per ulteriori informazioni sulla ricerca delle risorse statiche e dinamiche, vedere risorse XAML.

Una chiave di risorsa può essere qualsiasi stringa definita nel XamlName Grammar. Una chiave di risorsa può essere anche altri tipi di oggetto, ad esempio un Type. Una chiave Type è fondamentale per definire lo stile dei controlli in base ai temi. Per altre informazioni, vedere Cenni preliminari sulla creazione di controlli.

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

Il metodo dichiarativo alternativo per fare riferimento a una risorsa è come StaticResource Markup Extension.

La sintassi degli attributi è la sintassi più comune usata con questa estensione di markup. La stringa del token fornita dopo l'identificatore della stringa DynamicResource è assegnata come valore ResourceKey della classe di estensione DynamicResourceExtension sottostante.

DynamicResource può essere usato nella sintassi degli elementi oggetto. In questo caso, è necessario specificare il valore della proprietà ResourceKey.

DynamicResource può essere usato anche in un uso verboso dell'attributo che specifica la proprietà ResourceKey come coppia proprietà=valore.

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

L'uso verboso è spesso utile per estensioni che dispongono di più proprietà impostabili, oppure se alcune proprietà sono facoltative. Poiché DynamicResource dispone di una sola proprietà impostabile, la quale è necessaria, questo tipo di impiego dettagliato non è tipico.

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

DynamicResource è un'estensione di markup. Le estensioni di markup vengono in genere implementate quando è necessario che i valori degli attributi di escape siano diversi dai valori letterali o dai nomi dei gestori e il requisito è più globale rispetto all'inserimento di convertitori di tipi su determinati tipi o proprietà. Tutte le estensioni di markup in XAML usano i caratteri { e } nella sintassi degli attributi, ovvero la convenzione in base alla quale un processore XAML riconosce che un'estensione di markup deve elaborare l'attributo. Per ulteriori informazioni, vedere Markup Extensions e WPF XAML.

Vedere anche