2012-03-15 5 views
1

J'ai une case à cocher de modèle personnalisé que j'implémente en utilisant une viewbox (en utilisant une viewbox pour permettre une mise à l'échelle simple), et je n'arrive pas à changer ce qui est affiché lorsque la case est cochée/non cochée.Comment changer la couleur du contrôle CheckMark dans WPF CheckBox?

Je voudrais que la coche soit rouge lorsqu'elle est cochée (pas le look final, je veux juste que ça marche).

de style Mon Checkbox:

<Style x:Key="KioskCheckBox" TargetType="{x:Type CheckBox}"> 
     <Setter Property="FontFamily" Value="{StaticResource FontFamilyLight}" /> 
     <Setter Property="FontSize" Value="{StaticResource KioskNormalFontSize}" /> 
     <Setter Property="Foreground" Value="{StaticResource brshSystemTextColor}" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="CheckBox"> 

         <!--<Viewbox HorizontalAlignment="Left" 
           VerticalAlignment="Top" 
           Stretch="Fill" 
           Height="30" 
           Width="30" Margin="10,0,0,0"> 
          <Grid Height="200" Width="200"> 
           <Ellipse 
           Fill="Transparent" 
           StrokeThickness="15" 
           Stroke="{StaticResource brshSystemTextColor}"/> 
           <Path 
           Stroke="{StaticResource brshSecondaryColor}" 
           Fill="Transparent" 
           Stretch="None" 
           StrokeThickness="20" 
           Data="M 30,100 L 80,140 L 160,60" Margin="0,0,2,2"/> 
          </Grid> 
         </Viewbox>--> 
         <ContentControl> 
         <StackPanel Orientation="Horizontal"> 
          <Viewbox HorizontalAlignment="Left" 
           VerticalAlignment="Center" 
           Stretch="Fill" 
           Height="30" 
           Width="30" Margin="10,0,0,0"> 
           <Grid Height="200" Width="200"> 
            <Ellipse 
             Fill="Transparent" 
             StrokeThickness="15" 
             Stroke="{StaticResource brshSystemTextColor}"/> 
            <Path 
             Stroke="{StaticResource brshSecondaryColor}" 
             Fill="Transparent" 
             Stretch="None" 
             StrokeThickness="20" 
             Data="M 30,100 L 80,140 L 160,60" Margin="0,0,2,2"/> 
           </Grid> 
          </Viewbox> 
          <TextBlock Text="{TemplateBinding Content}" Margin="10,0,0,0" /> 
         </StackPanel> 
        </ContentControl> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsChecked" Value="True"> 

          <!-- Running into problems here. --> 

         </Trigger> 
         <Trigger Property="IsChecked" Value="False"> 

         </Trigger> 
        </ControlTemplate.Triggers> 

       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

Répondre

2

Go pour le modèle d'origine (here). Ceci est la partie où la couleur est définie:

<Path Visibility="Collapsed" 
     Width="7" 
     Height="7" 
     x:Name="CheckMark" 
     SnapsToDevicePixels="False" 
     StrokeThickness="2" 
     Data="M 0 0 L 7 7 M 0 7 L 7 0"> 
    <Path.Stroke> 
    <SolidColorBrush Color="{DynamicResource GlyphColor}" /> 
    </Path.Stroke> 
</Path> 

Désolé, désolé et encore désolé ... Je pense que c'est ce que vous cherchez:

<ControlTemplate TargetType="CheckBox"> 
    <Grid> 
    <Path x:Name="Equis" 
      Opacity="0" 
      Stroke="Red" 
      Fill="Red" 
      Stretch="UniformToFill" 
      StrokeThickness="20" 
      Data="M 30,100 L 80,140 L 160,60" 
      Margin="0,0,2,2" /> 
    <ContentPresenter Margin="4" 
         HorizontalAlignment="Left" 
         VerticalAlignment="Top" /> 
    </Grid> 
    <ControlTemplate.Triggers> 
    <Trigger Property="IsChecked" 
      Value="true"> 
     <Setter TargetName="Equis" 
       Property="Opacity" 
       Value="1" /> 
    </Trigger> 
    <Trigger Property="IsChecked" 
      Value="false"> 
     <Setter TargetName="Equis" 
       Property="Opacity" 
       Value="0" /> 
    </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 
+0

Désolé pour mon ignorance, mais pouvez-vous jeter cela dans ** ** et le poster afin que je puisse avoir une meilleure idée de ce que vous me dites? – AGoodDisplayName

+0

Je ne reçois pas l'effondrement? – Paparazzi

+0

AGoodDisplayName: Eh bien, vous avez dit "Je voudrais que la coche soit rouge lorsqu'elle est cochée" le modèle par défaut utilise le code que j'ai posté pour dessiner la coche. Blam: Je suppose que le "Collapsed" est modifié en "Visible", lorsque la valeur de la case à cocher est true. – NestorArturo

Questions connexes