WPF: Come eredito i valori delle proprietà per tutti i controlli figlio?
-
05-07-2019 - |
Domanda
Ho UserControls che contiene altri controlli. Voglio che se imposto un colore di primo piano per UserControl, tutti i controlli figlio lo ereditano automaticamente. Ho lo stesso problema con lo stile / la dimensione del carattere.
Posso impostare queste proprietà in qualche modo su auto / ereditare? È possibile impostare tutti i sottocontrolli senza un ciclo?
Soluzione
Puoi creare dizionari di risorse per definire stili predefiniti a livello globale.
Puoi anche fare riferimento a un dizionario di risorse o definire uno stile in qualsiasi oggetto.
In entrambi i casi tali stili si applicheranno a tutti gli oggetti figlio che non hanno uno stile esplicitamente definito ...
Esempio:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<!--Default styles that will apply to any object of the specified type (if it doesn't have style set locally)-->
<Style TargetType="Label" >
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="Padding" Value="0"/>
</Style>
</ResourceDictionary>
Altri suggerimenti
Cerca di utilizzare le impostazioni di Stili e BasedOn.
Di recente ho scritto un esempio di qualcosa di simile che si trova qui . Purtroppo la domanda era relativa a Silver Lite, quindi non ha risposto alla domanda, ma penso che possa darti alcune idee su dove cercare.