2016-10-12 49 views
0

我有以下的複選框默認的文本塊造型

<CheckBox x:Name="checkBox" Content="CheckBox" Width="74"/>

和我有一個按鈕

<Button Name="TestButton" Content="Test" />

我想設置爲文本塊「默認」的色彩。我做到這一點通過具有具有下列內容資源字典:

<Style TargetType="{x:Type TextBlock}"> 
    <Setter Property="Foreground" Value="White"/> 
</Style> 

的問題是,該按鈕還是應該有一個黑色的文字塊的前景,但但在另一sourcedictionary我有以下,但仍然變爲白色:

<Style TargetType="Button"> 
    <Style.Setters> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Button"> 
        <Border BorderThickness="1,0,0,1" CornerRadius="5" Background="{TemplateBinding Background}"> 
         <ContentPresenter 
           x:Name="ContentPresenter" 
           Margin="1" 
           VerticalAlignment="Center" 
           HorizontalAlignment="Center" 
           TextBlock.Foreground="Black" 
           Opacity="1.0"/> 
        </Border> 
       </ControlTemplate/> 
      <Setter.Value/> 
     </Setter> 
    </Style.Setters> 
</Style 

編輯: 的ResourceDictionaries在Application.xaml定義是這樣的:

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="TextBlock.xaml"/> 
      <ResourceDictionary Source="Buttons.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 
+0

在ContentPresenter中,您是否嘗試過'TextElement.Foreground =「Black」'而不是'TextBlock.Foreground'? –

+0

是的,'TextElement.Foreground'和'TextBlock.Foreground'都改變了Text的顏色,但是仍然被其他風格所覆蓋。 – Splinti

+0

如何定義在'ContentPresenter.Resources'其他默認TextBlock的風格? –

回答

1

你可以嘗試通過定義在其Resources另一個本地覆蓋默認TextBlock樣式爲ContentPresenter

<ContentPresenter ... > 
    <ContentPresenter.Resources> 
     <Style TargetType="TextBlock"> 
      <Setter Property="Foreground" Value="Black" /> 
     </Style> 
    </ContentPresenter.Resources> 
</ContentPresenter> 

但更好的方法來設置默認控件文本顏色是這樣的App.ResourcesTextElement.Foreground將在任何給定的單個元素上覆蓋此值。

<SolidColorBrush 
    x:Key="{x:Static SystemColors.ControlTextBrushKey}" 
    Color="White" 
    /> 

如果使用和丟棄您的默認TextBlock風格,你原來的你了吧ContentPresenter應該工作。