Estensione del 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 alla ricerca in fase di esecuzione.

Uso della sintassi XAML per gli attributi

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

Utilizzo della sintassi XAML per elementi proprietà

<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 key parametro quando si chiama ResourceDictionary.Add se la risorsa è stata creata nel codice.

Osservazioni

Un DynamicResource crea un'espressione temporanea durante la compilazione iniziale e quindi rinvia 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 verrà trovato in base alla ricerca delle chiavi in tutti i dizionari di risorse attivi a partire dall'ambito della pagina corrente e viene sostituito dall'espressione segnaposto dalla 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, l'oggetto DynamicResource viene rimosso completamente. Per altri dettagli, vedere Precedenza del valore della proprietà di dipendenza.

Alcuni scenari di accesso alle risorse sono particolarmente appropriati invece DynamicResource di un'estensione di markup StaticResource. Vedi Risorse XAML per una discussione sui meriti relativi e sulle implicazioni sulle prestazioni di DynamicResource e StaticResource.

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

Una chiave di risorsa può essere qualsiasi stringa definita nella grammatica XamlName. Una chiave di risorsa può anche essere di altri tipi di oggetto, ad esempio .Type Una Type chiave è fondamentale per definire lo stile dei controlli in base ai temi. Per altre 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 usata da DynamicResource.

Il metodo dichiarativo alternativo per fare riferimento a una risorsa è un'estensione di 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.

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

L'oggetto DynamicResource può anche essere utilizzato per un utilizzo 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 le 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 per questa estensione di markup è definita dalla DynamicResourceExtension classe .

DynamicResource è un'estensione di markup. Le estensioni di markup in genere vengono implementate quando per i valori dell'attributo devono essere utilizzati caratteri escape in modo che non vengano considerati come valori letterali o nomi di gestori e il requisito è più globale del semplice utilizzo di convertitori dei tipi su alcuni 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 altre informazioni, vedere Estensioni di markup e XAML WPF.

Vedi anche