Estensione del markup 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 caricate in precedenza dal markup della pagina XAML corrente e altre origini dell'applicazione e genererà tale valore della risorsa come valore della proprietà negli oggetti di runtime.

Uso 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

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

Importante

Un StaticResource oggetto non deve tentare di eseguire un riferimento in avanti a una risorsa definita in modo lessicale all'interno del file XAML. Il tentativo di eseguire questa operazione non è supportato e, anche se tale riferimento non riesce, il tentativo di riferimento in avanti comporta una riduzione delle prestazioni del tempo di caricamento quando vengono eseguite ricerche nelle tabelle hash interne che rappresentano un ResourceDictionary oggetto . Per ottenere risultati ottimali, modificare la composizione dei dizionari risorse in modo che i riferimenti in avanti possano essere evitati. Se non è possibile evitare un riferimento in avanti, usare invece l'estensione di markup DynamicResource.

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

Una chiave di risorsa può essere qualsiasi stringa definita nella grammatica XamlName. Una chiave di risorsa può essere anche altri tipi di oggetto, ad esempio .Type Una Type chiave è fondamentale per definire lo stile dei controlli in base ai temi, tramite una chiave di stile implicita. Per altre informazioni, vedere Cenni preliminari sulla modifica di controlli.

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

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

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

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