Estensione di markup {CustomResource}

Fornisce un valore per qualsiasi attributo XAML valutando un riferimento a una risorsa che proviene dall'implementazione di una ricerca di risorse personalizzata. La ricerca di risorse viene eseguita da un'implementazione della classe CustomXamlResourceLoader.

Utilizzo attributo XAML

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

Valori XAML

Termine Descrizione
chiave Chiave per la risorsa richiesta. La modalità di assegnazione iniziale della chiave è specifica dell'implementazione della classe CustomXamlResourceLoader attualmente registrata per l'uso.

Osservazioni:

CustomResource è una tecnica per ottenere valori definiti altrove in un repository di risorse personalizzato. Questa tecnica è relativamente avanzata e non è usata dalla maggior parte degli scenari di app Windows Runtime.

Il modo in cui un elemento CustomResource viene risolto in un dizionario di risorse esula da questo argomento perché può variare a seconda della modalità di implementazione di CustomXamlResourceLoader.

Il metodo GetResource dell'implementazione CustomXamlResourceLoader è chiamato dal parser XAML di Windows Runtime ogni volta che incontra un utilizzo {CustomResource} nel markup. L'elemento resourceId passato a GetResource deriva dall'argomento key, mentre gli altri parametri di input derivano dal contesto, ad esempio la proprietà a cui è applicato l'utilizzo.

Un utilizzo {CustomResource} non funziona per impostazione predefinita (l'implementazione di base di GetResource è incompleta). Per creare un riferimento {CustomResource} valido, è necessario eseguire ognuno di questi passaggi:

  1. Derivare una classe personalizzata da CustomXamlResourceLoader ed eseguire l'override del metodo GetResource. Non chiamare la classe base nell'implementazione.
  2. Impostare CustomXamlResourceLoader.Current per fare riferimento alla classe nella logica di inizializzazione. Questo deve accadere prima del caricamento di qualsiasi codice XAML a livello di pagina che include l'utilizzo dell'estensione {CustomResource}. Una posizione in cui impostare CustomXamlResourceLoader.Current è il costruttore di sottoclassi Application generato automaticamente nei modelli code-behind di App.xaml.
  3. Ora è possibile usare le estensioni {CustomResource} nel codice XAML che l'app carica come pagine o dai dizionari di risorse XAML.

CustomResource è 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, vale a dire la convenzione in base a cui il processore XAML riconosce che l'attributo deve essere elaborato da un'estensione di markup.