如何自定义组合框内的复选框文本?

问题描述:

我注意到TextElement.Foreground不工作,但Background = Red和FontWeight = Bold工作正常。任何想法为什么前景不适用自定义样式?如何自定义组合框内的复选框文本?

<ComboBox.ItemTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
      <CheckBox Name="ChkDayResource" Style="{DynamicResource CheckBoxBlueStyle}" 
          IsChecked="{Binding Path=IsSelected}" 
          Tag="{Binding Path=., RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridRow}, AncestorLevel=1}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
          Click="ChkDayResource_Click" Content="{Binding Path=DayName}"> 
      </CheckBox> 
      <!--<TextBlock Width="Auto" Text="{Binding Path=DayName}" IsHitTestVisible="True"/>--> 
     </StackPanel> 
    </DataTemplate> 
</ComboBox.ItemTemplate> 
<ComboBox.ItemContainerStyle> 
    <Style TargetType="{x:Type ComboBoxItem}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ComboBoxItem}"> 
        <Border x:Name="Bd" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="0" 
         Margin="-1,0,-1,0" 
         Background="{TemplateBinding Background}"> 
         <StackPanel Orientation="Horizontal" Margin="10,0,10,0"> 
          <ContentPresenter x:Name="content" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> 
         </StackPanel> 
        </Border> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsHighlighted" Value="True"> 
          <Setter TargetName="Bd" Property="Background" Value="Red" /> 
          <Setter Property="TextElement.Foreground" Value="Yellow" /> 
          <Setter Property="TextElement.FontWeight" TargetName="content" Value="Bold" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</ComboBox.ItemContainerStyle> 

enter image description here

它是由于CheckBoxBlueStyle我申请的复选框?如果是的话,我该如何重写样式?

+0

PLS忽略给定的代码和屏幕截图之间的不同。背景和fontweight工作正常。 – soniality

+0

您是否缺少Setter中的TargetName属性... –

默认CheckBoxStyle有问题。检查它例如在混合显示:

<Style x:Key="CheckBoxStyle1" TargetType="{x:Type CheckBox}"> 
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
    <!-- other property setters --> 
</Style> 

所以,你需要直接或通过风格分配一个新Foreground,如果你不想要的默认值。

可能的解决方案:

<CheckBox Name="ChkDayResource" Foreground="{Binding Path=(TextElement.Foreground),RelativeSource={RelativeSource AncestorType=StackPanel}}"