Estensione del markup StaticResource

Aggiornamento: novembre 2007

Fornisce un valore per qualsiasi attributo di proprietà XAML eseguendo la ricerca di un riferimento a una risorsa già definita. Il comportamento della ricerca per quella risorsa è analogo alla ricerca in fase di caricamento, che cercherà le risorse caricate in precedenza dal markup della pagina XAML corrente oltre che le altre origini dell'applicazione e genererà il valore di risorsa come valore della proprietà negli oggetti runtime.

Utilizzo della sintassi XAML per gli attributi

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

Utilizzo della sintassi XAML per gli elementi oggetto

<object>
  <object.property>
<StaticResource 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 al momento della chiamata all'oggetto ResourceDictionary.Add se la risorsa è stata creata nel codice.

Note

Nota importante:

Un oggetto StaticResource non deve tentare di eseguire un riferimento diretto a una risorsa con una definizione lessicale ulteriore all'interno del file XAML. Un tentativo di questo tipo non è supportato e persino se tale riferimento ha esito positivo, si verificherà una riduzione delle prestazioni in fase di caricamento durante la ricerca nelle tabelle hash interne che rappresentano un oggetto ResourceDictionary. Per risultati ottimali, regolare la composizione dei dizionari di risorse in modo da evitare tali riferimenti diretti. Se non è possibile evitare un riferimento diretto, utilizzare invece Estensione del markup DynamicResource.

L'oggetto ResourceKey specificato deve corrispondere a una risorsa esistente, identificata con un oggetto Attributo x:Key a un certo livello nella pagina, nell'applicazione, nei temi dei controlli e nelle risorse esterne disponibili oppure nelle risorse di sistema. La ricerca delle risorse viene eseguita in quell'ordine. Per ulteriori informazioni sul comportamento della 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 mediante una chiave di stile implicita. Per ulteriori informazioni, vedere Cenni preliminari sulla modifica di controlli.

Un modo alternativo per fare riferimento a una risorsa è come Estensione del markup DynamicResource.

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

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

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

<object property="{StaticResource 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é StaticResource 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 StaticResourceExtension.

StaticResource è 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

Applicazione di stili e modelli

Cenni preliminari su XAML

Estensioni di markup e XAML

Cenni preliminari sulle risorse

Risorse e codice