Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Fornisce un valore per qualsiasi attributo XAML valutando un riferimento a una risorsa già definita. Le risorse vengono definite in un ResourceDictionary e un utilizzo StaticResource fa riferimento alla chiave di tale risorsa in ResourceDictionary.
Utilizzo degli attributi XAML
<object property="{StaticResource key}" .../>
Valori XAML
| Termine | Description |
|---|---|
| key | Chiave per la risorsa richiesta. Questa chiave viene inizialmente assegnata da ResourceDictionary. Una chiave di risorsa può essere qualsiasi stringa definita nella grammatica XamlName. |
Osservazioni:
StaticResource è una tecnica per ottenere valori per un attributo XAML definito altrove in un dizionario risorse XAML. I valori possono essere inseriti in un dizionario risorse perché sono destinati a essere condivisi da più valori di proprietà o perché un dizionario risorse XAML viene usato come tecnica di creazione di pacchetti o fattorizzazione XAML. Un esempio di tecnica di creazione di pacchetti XAML è il dizionario dei temi per un controllo . Un altro esempio è costituito dai dizionari delle risorse combinati usati per il ripiego delle risorse.
StaticResource accetta un argomento, che specifica la chiave per la risorsa richiesta. Una chiave di risorsa è sempre una stringa in XAML di Windows Runtime. Per altre info su come viene inizialmente specificata la chiave di risorsa, vedi attributo x:Key.
Le regole in base alle quali un oggetto StaticResource viene risolto in un elemento in un dizionario risorse non sono descritte in questo argomento. Ciò dipende dal fatto che il riferimento e la risorsa esistano entrambi in un modello, indipendentemente dal fatto che vengano usati dizionari risorse uniti e così via. Per altre info su come definire le risorse e usare correttamente un ResourceDictionary, incluso il codice di esempio, vedi Riferimenti alle risorse ResourceDictionary e XAML.
Importante Un oggetto StaticResource 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. Anche se il riferimento in avanti non fallisce, il tentativo di crearlo comporta una penalità sulle prestazioni. Per ottenere risultati ottimali, modificare la composizione dei dizionari risorse in modo che i riferimenti in avanti vengano evitati.
Il tentativo di specificare un StaticResource su una chiave che non è in grado di risolvere genera un'eccezione di analisi XAML in fase di esecuzione. Gli strumenti di progettazione possono anche offrire avvisi o errori.
Nell'implementazione del processore XAML di Windows Runtime non esiste alcuna rappresentazione della classe di backup per la funzionalità StaticResource . StaticResource è esclusivamente per l'uso in XAML. L'equivalente più vicino nel codice consiste nell'usare l'API di raccolta di un oggetto ResourceDictionary, ad esempio chiamando Contains o TryGetValue.
L'estensione di markup {ThemeResource} è un'estensione di markup simile che fa riferimento alle risorse denominate in un'altra posizione. La differenza è che l'estensione di markup {ThemeResource} ha la possibilità di restituire risorse diverse a seconda del tema di sistema attivo. Per altre info, vedi Estensione di markup {ThemeResource}.
StaticResource è 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.
Esempio di utilizzo di {StaticResource}
Questo codice XAML di esempio è tratto dall'esempio di data binding XAML.
<StackPanel Margin="5">
<!-- Add converter as a resource to reference it from a Binding. -->
<StackPanel.Resources>
<local:S2Formatter x:Key="GradeConverter"/>
</StackPanel.Resources>
<TextBlock Style="{StaticResource BasicTextStyle}" Text="Percent grade:" Margin="5" />
<Slider x:Name="sliderValueConverter" Minimum="1" Maximum="100" Value="70" Margin="5"/>
<TextBlock Style="{StaticResource BasicTextStyle}" Text="Letter grade:" Margin="5"/>
<TextBox x:Name="tbValueConverterDataBound"
Text="{Binding ElementName=sliderValueConverter, Path=Value, Mode=OneWay,
Converter={StaticResource GradeConverter}}" Margin="5" Width="150"/>
</StackPanel>
Questo particolare esempio crea un oggetto supportato da una classe personalizzata e lo crea come risorsa in un ResourceDictionary. Per essere una risorsa valida, questo local:S2Formatter elemento deve avere anche un valore di attributo x:Key . Il valore dell'attributo è impostato su "GradeConverter".
La risorsa viene quindi richiesta solo un po' più avanti nel codice XAML, dove viene visualizzato {StaticResource GradeConverter}.
Si noti che l'utilizzo dell'estensione di markup {StaticResource} imposta una proprietà di un'altra estensione di markup {Binding}, quindi qui sono disponibili due utilizzi di estensione di markup annidati. Il valore interno viene valutato per primo, in modo che la risorsa venga ottenuta per prima e possa essere usata come valore. Questo stesso esempio è illustrato anche nell'estensione di markup {Binding}.
Supporto degli strumenti in fase di progettazione per l'estensione di markup {StaticResource}
Microsoft Visual Studio può includere i possibili valori chiave negli elenchi a discesa Microsoft IntelliSense quando si usa l'estensione di markup {StaticResource} in una pagina XAML. Ad esempio, non appena si digita "{StaticResource", le chiavi di risorsa dell'ambito di ricerca corrente vengono visualizzate negli elenchi a discesa IntelliSense. Oltre alle risorse tipiche disponibili a livello di pagina (FrameworkElement.Resources) e a livello di app (Application.Resources), vengono visualizzate anche le risorse del tema XAML e le risorse di qualsiasi estensione usata dal progetto.
Una volta presente una chiave di risorsa come parte di qualsiasi utilizzo di {StaticResource} , la funzionalità Vai a definizione (F12) può risolvere tale risorsa e visualizzare il dizionario in cui è definito. Per le risorse del tema, questo passa a generic.xaml per la fase di progettazione.