2016-05-02 11 views
0

Ich habe den folgenden Code, es ist eine Schaltfläche mit einem geometrischen Symbol istÄndern der Vordergrundfarbe eines Content ein Content und TextBlock- enthält

<Button Style="{StaticResource Button}" IsEnabled="False"> 
    <DockPanel> 
     <ContentControl Template="{StaticResource geometryMenuContentTemplate}" 
         DataContext="{StaticResource keyboardButtonGeometry}" 
         Style="{StaticResource TopBarIcon}" /> 
     <TextBlock Style="{StaticResource TopBarHeaderText}" Text="KEYBOARD"/> 
    </DockPanel> 
</Button> 

<ControlTemplate x:Key="geometryMenuContentTemplate" TargetType="ContentControl"> 
    <Canvas> 
     <Path Width="25" Height="25" Stretch="Fill" Fill="{TemplateBinding Foreground}" Data="{Binding}"/> 
    </Canvas> 
</ControlTemplate> 

<StreamGeometry x:Key="keyboardButtonGeometry"> 
    F1 M 15.8333,2... 
</StreamGeometry> 

Styled mit:

<Style x:Key="Button" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}"> 
    <Setter Property="Foreground" Value="{StaticResource StandardForegroundColor}" /> 
    <Setter Property="Template" Value="{StaticResource ButtonTemplate}" /> 
</Style> 

<ControlTemplate x:Key="ButtonTemplate" TargetType="Button"> 
    <Border BorderThickness="{TemplateBinding BorderThickness}" 
      BorderBrush="{TemplateBinding BorderBrush}" 
      Padding="{TemplateBinding Padding}" 
      Background="{TemplateBinding Background}"> 
     <ContentPresenter Name="ButtonContentPresenter" Margin="{TemplateBinding Padding}" TextBlock.Foreground="Red"/> 
    </Border> 
</ControlTemplate> 


<Style x:Key="TopBarHeaderText" TargetType="TextBlock" BasedOn="{StaticResource StatsHeaderText}"> 
    <Setter Property="Foreground" Value="White" /> 
</Style> 

Die visuelle Ausgabe von mein Code ist folgende:

Button aspect

I Möchte man (in ButtonTemplate) die Vordergrundfarbe der Textblock innerhalb der ContentPresenter genannten ButtonContentPresenter in rote Farbe ändern. Mein Code änderte nur die Farbe des Symbols und nicht die TextBlock. Warum? Wie zu ändern nur die Textblock farbe?

würde Ich mag so etwas bekommen:

Final image

+0

Ihr TextBlock befindet sich nicht im ContentControl und Ihr Stil steuert trotzdem Schaltflächensteuerelemente und keine TexBlock-Steuerelemente –

Antwort

1

durch den Code Lesen, bemerkte ich, dass Ihr Textblock hat einen Stil namens TopBarHeaderText, aber ich sehe nicht, dass Stil in Frage . Der Grund dafür, dass das Bild die Farbe ändert, liegt darin, dass Sie festlegen, dass die Füllung {TemplateBinding Foreground} ist - legen Sie diese Einstellung möglicherweise im Stil für den TextBlock (TopBarHeaderText-Stil) fest?

Es sieht einfach so aus (aus dem Code, den ich sehe), dass Sie versehentlich die Farbdefinitionen in den Optionen geometryMenuContentTemplate und TopBarHeaderText umgedreht haben.