2012-08-30 14 views
8

Come si imposta il colore Foreground di tutti gli elementi figlio in un Grid dallo stile della griglia? So di averlo fatto prima, ma non riesco a ricordare dove o come.Come si imposta il colore di primo piano di qualsiasi elemento figlio in una griglia dallo stile della griglia?

<Style x:Key="MyGridStyle" TargetType="{x:Type Grid}"> 
    // I want to set the font color here 
</Style> 

<Grid Style="{StaticResource MyGridStyle}"> 
    ... 
</Grid> 

So che posso usare

<Grid.Resources> 
    <Style TargetType="{x:Type TextBlock}"> 
     <Setter Property="Foreground" Value="Red" /> 
    </Style> 
    <Style TargetType="{x:Type TextBox}"> 
     <Setter Property="Foreground" Value="Red" /> 
    </Style> 
</Grid.Resources> 

però io voglio impostare questo valore nella Style, non nel Grid

risposta

13

capito, ho solo bisogno di impostare lo stile di default in <Style.Resources>

<Style x:Key="MyGridStyle" TargetType="{x:Type Grid}"> 
    <Style.Resources> 
     <Style TargetType="{x:Type TextBlock}"> 
      <Setter Property="Foreground" Value="Red" /> 
     </Style> 
     <Style TargetType="{x:Type TextBox}"> 
      <Setter Property="Foreground" Value="Red" /> 
     </Style> 
    </Style.Resources> 
</Style> 
+2

Questo funziona, ma non è l'ideale. – ANeves

13

Che ne dite:

<Style x:Key="MyGridStyle" TargetType="{x:Type Grid}"> 
    <Setter Property="TextElement.Foreground" Value="Red"/> 
</Style> 
+0

Funziona, ma solo per TextBlocks. L'uso di '' mi permette di usare 'TextBoxes' e altri controlli. +1 in ogni caso per un modo più semplice di farlo se il tuo pannello contiene solo elementi 'TextBlock' – Rachel

+2

@Rachel: Cheating! I pali sono stati spostati ... –

+0

lol sì, stavo testando con gli elementi di 'TextBlock' ma la mia griglia attuale contiene anche' TextBoxes'. Non ho pensato di fare la differenza finché non hai postato la tua risposta :) – Rachel

Problemi correlati