Share via


Estensione di markup ThemeDictionary

Offre agli autori di controlli personalizzati o alle applicazioni che integrano controlli di terze parti un modo per caricare dizionari di risorse specifici del tema da usare per l'applicazione di stili al controllo.

Uso della sintassi XAML per gli attributi

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

Utilizzo della sintassi XAML per gli elementi oggetto

<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 tipo pack che fa riferimento a un assembly del pacchetto più grande. Le risorse di assembly e gli URI di tipo pack semplificano i problemi di distribuzione. Per altre informazioni, vedere URI di tipo 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 singolo assembly solo risorse che contiene alcuni stili da utilizzare solo quando il tema Aero di Windows viene applicato al sistema dell'utente, altri stili solo quando il tema Luna è attivo e così via. Con questa estensione, il contenuto di un dizionario risorse specifico del controllo può essere invalidato automaticamente e ricaricato in modo che venga considerato specifico per un altro tema quando necessario.

La assemblyUri stringa (AssemblyName valore della proprietà ) costituisce la base di una convenzione di denominazione che identifica il dizionario applicato per un tema specifico. La ProvideValue logica per ThemeDictionary completare la convenzione generando un URI (Uniform Resource Identifier) che punta a una particolare variante del dizionario dei temi, come contenuto in un assembly di risorse precompilato. La descrizione di questa convenzione o delle interazioni dei temi con l'applicazione generale degli stili al controllo e a livello di pagina o di applicazione come concetto, non è illustrata completamente in questa sezione. Lo scenario di base per l'uso ThemeDictionary consiste nel specificare la Source proprietà di un ResourceDictionary oggetto 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à la logica di invalidazione che viene applicata ogni volta che il tema di sistema cambia.

La sintassi per gli attributi è quella più comunemente utilizzata con questa estensione di markup. Il token di stringa fornito dopo la stringa dell'identificatore ThemeDictionary viene assegnato come valore AssemblyName della classe dell'estensione ThemeDictionaryExtension sottostante.

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

L'oggetto ThemeDictionary può anche essere utilizzato per un utilizzo dettagliato degli attributi che consente di specificare la proprietà Member come coppia proprietà=valore:

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

L'utilizzo dettagliato spesso è utile per le estensioni con più proprietà da impostare o nel caso in cui alcune proprietà siano facoltative. Poiché ThemeDictionary 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 ThemeDictionaryExtension classe .

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