Condividi tramite


Estensione markup di StaticResource

Fornisce un valore per qualsiasi attributo di proprietà XAML cercando un riferimento a una risorsa già definita. Il comportamento di ricerca per tale risorsa è analogo alla ricerca in fase di caricamento, che cercherà le risorse precedentemente caricate dal markup della pagina XAML corrente e da altre origini dell'applicazione, e genererà tale valore della risorsa come valore della proprietà negli oggetti in tempo di esecuzione.

Utilizzo degli attributi XAML

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

Utilizzo dell'elemento oggetto XAML

<object>  
  <object.property>  
<StaticResource 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 quando si chiama ResourceDictionary.Add, se la risorsa è stata creata nel codice.

Osservazioni

Importante

Un StaticResource non deve tentare di fare un riferimento in avanti a una risorsa definita in modo lessicale all'interno del file XAML. Tentare di eseguire questa operazione non è supportato e, anche se tale riferimento non fallisce, il tentativo di riferimento anticipato comporterà una penalizzazione delle prestazioni durante il caricamento quando le tabelle hash interne che rappresentano un ResourceDictionary vengono ricercate. Per ottenere risultati ottimali, modificare la composizione dei dizionari delle risorse in modo da evitare i riferimenti anticipati. Se non è possibile evitare un riferimento in avanti, usare 'estensione di markup DynamicResource.

Il ResourceKey specificato deve corrispondere a una risorsa esistente, identificata con una direttiva x:Key a qualche livello nella pagina, nell'applicazione, nei temi di controllo disponibili, nelle risorse esterne o nelle risorse di sistema. La ricerca della risorsa viene eseguita in questo ordine. Per ulteriori informazioni sul comportamento di ricerca delle risorse per le risorse statiche e dinamiche, consultare risorse XAML.

Una chiave di risorsa può essere qualsiasi stringa definita nella 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, tramite una chiave di stile implicita. Per altre informazioni, vedere Cenni preliminari sulla creazione di controlli.

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

La sintassi degli attributi è la sintassi più comune usata con questa estensione di markup. Il token della stringa fornito dopo la stringa identificatore StaticResource è assegnato come valore ResourceKey della classe di estensione StaticResourceExtension sottostante.

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

StaticResource può essere usato anche in un uso esplicito dell'attributo che specifica la proprietà ResourceKey come coppia proprietà=valore:

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

L'utilizzo descrittivo è spesso utile per le estensioni con più proprietà impostabili o se alcune proprietà sono facoltative. Poiché StaticResource dispone di una sola proprietà impostabile, che è necessaria, questo uso dettagliato è inusuale.

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

StaticResource è un'estensione di markup. Le estensioni di markup vengono in genere implementate quando è necessario fare in modo che i valori degli attributi siano diversi dai valori letterali o dai nomi dei gestori, e l'esigenza è più ampia 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 altre informazioni, vedere estensioni di markup e XAML WPF.

Vedere anche