2017-08-17 2 views
-1

Ich stelle fest, dass das TextElement.Foreground nicht funktioniert, aber die Background = Red und FontWeight = Bold funktioniert gut. Irgendeine Idee, warum Vordergrund den benutzerdefinierten Stil nicht anwendet?Wie kann ich Checkbox-Text in einer Combobox anpassen?

<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

Ist es aufgrund der CheckBoxBlueStyle ich auf die CheckBox angewendet? Wenn ja, wie kann ich das Styling überschreiben?

+0

Pls den Unterschied zwischen Code und Screenshot gegeben ignorieren. Der Hintergrund und das Fontgewicht funktionieren einwandfrei. – soniality

+0

Vermissen Sie das TargetName-Attribut in Ihrem Setter? –

Antwort

0

Der Standardwert CheckBoxStyle ist fehlerhaft. Inspizieren es zum Beispiel in Mischung offenbart:

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

So müssen Sie eine neue Foreground direkt oder über Stil zuordnen, wenn Sie die eine Standard nicht wollen.

Mögliche Lösung:

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