Condividi tramite


Estensione di ThemeDictionary Markup

Fornisce un modo per gli autori di controlli personalizzati o le applicazioni che integrano controlli di terze parti per caricare dizionari di risorse specifici del tema da usare nello stile del controllo.

Utilizzo degli attributi XAML

<object property="{ThemeDictionary assemblyUri}" ... />  

Utilizzo dell'elemento oggetto XAML

<object>  
  <object.property>  
    <ThemeDictionary AssemblyName="assemblyUri"/>  
  <object.property>  
<object>  

Valori XAML

Valore Descrizione
assemblyUri URI (Uniform Resource Identifier) dell'assembly che contiene informazioni sul tema. In genere, si tratta di un URI di pacchetto che fa riferimento a un assembly nel pacchetto più grande. Le risorse degli assembly e gli URI pack semplificano i problemi di distribuzione. Per altre informazioni, vedere URI di Pack in WPF.

Osservazioni

Questa estensione è destinata a riempire un solo valore di proprietà specifico: un valore per ResourceDictionary.Source.

Usando questa estensione, è possibile specificare un unico assembly di sole risorse che contiene alcuni stili da usare esclusivamente quando il tema Aero di Windows è applicato al sistema dell'utente, altri stili solo quando il tema Luna è attivo e così via. Usando questa estensione, il contenuto di un dizionario risorse specifico del controllo può essere invalidato e ricaricato automaticamente per essere specifico per un altro tema quando necessario.

La stringa assemblyUri (valore della proprietàAssemblyName) costituisce la base di una convenzione di denominazione che identifica quale dizionario si applica a un tema specifico. La logica di ProvideValue per ThemeDictionary completa la convenzione generando un URI (Uniform Resource Identifier) che punta a una variante specifica del dizionario dei temi, come contenuto in un assembly di risorse precompilato. La descrizione di questa convenzione o delle interazioni dei temi con stili di controllo generali e stili a livello di pagina/applicazione come concetto non viene trattata completamente qui. Lo scenario di base per l'uso di ThemeDictionary consiste nel specificare la proprietà Source di un ResourceDictionary dichiarato a livello di applicazione. Quando si specifica un URI per l'assembly tramite un'estensione ThemeDictionary anziché come URI diretto, la logica di estensione fornirà un meccanismo di invalidazione che si applica ogni volta che il tema del sistema cambia.

La sintassi degli attributi è la sintassi più comune usata con questa estensione di markup. La stringa token fornita dopo la stringa identificatore ThemeDictionary è assegnata come valore AssemblyName della classe di estensione sottostante ThemeDictionaryExtension.

ThemeDictionary possono essere usati anche nella sintassi degli elementi oggetto. In questo caso, è necessario specificare il valore della proprietà AssemblyName.

ThemeDictionary può essere usato anche in un uso dettagliato dell'attributo che specifica la proprietà Member come coppia proprietà=valore.

<object property="{ThemeDictionary AssemblyName=assemblyUri}" ... />  

L'utilizzo dettagliato è spesso utile per le estensioni con più proprietà impostabili o se alcune proprietà sono facoltative. Poiché ThemeDictionary ha una sola proprietà impostabile ed è obbligatoria, questo utilizzo dettagliato non è tipico.

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

ThemeDictionary è 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. Per altre informazioni, vedere estensioni di markup e XAML WPF.

Vedere anche