Как изменить цвет CheckMark в WPF CheckBox? - PullRequest
1 голос
/ 15 марта 2012

У меня есть пользовательский флажок шаблона, который я внедряю, используя окно просмотра (используя окно просмотра для простого масштабирования), и я не могу понять, как изменить то, что отображается, когда флажок установлен / снят.

Я бы хотел, чтобы флажок был красным, когда он отмечен (не окончательный вид, просто хочу, чтобы он работал).

Стиль моего флажка:

<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>

1 Ответ

3 голосов
/ 15 марта 2012

Перейти на оригинальный шаблон ( здесь ). Это часть, где цвет определяется:

<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>

Извините, извините и еще раз извините ... Я думаю, это то, что вы ищете:

<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>
...