2012-08-30 9 views
8

Wie stelle ich die Foreground Farbe aller untergeordneten Elemente in einer Grid aus dem Grid-Stil? Ich weiß, dass ich das schon einmal gemacht habe, aber ich kann mich nicht erinnern, wo oder wie.Wie lege ich die Vordergrundfarbe eines untergeordneten Elements in einem Raster vom Stil des Gitters fest?

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

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

Ich weiß, ich

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

können aber ich diesen Wert in der Style festlegen möchten, nicht in der Grid

Antwort

13

figured it out, ich muss nur den Standardstil gesetzt 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

Dies funktioniert, ist aber nicht ideal. – ANeves

13

Wie wäre:

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

Das funktioniert, aber nur für TextBlocks. Mit '' kann ich auch 'TextBoxes' und andere Steuerelemente definieren. +1 sowieso für eine sauberere Art es zu tun, wenn dein Panel nur 'TextBlock' Elemente enthält – Rachel

+2

@Rachel: Cheating! Die Torpfosten wurden verschoben ... –

+0

lol Ja, ich habe mit 'TextBlock' Elementen getestet, aber mein aktuelles Grid enthält' TextBoxen'. Ich habe nicht daran gedacht, die Unterscheidung zu treffen, bis du deine Antwort geschrieben hast :) – Rachel

Verwandte Themen