2015-12-04 101 views
2

我正在做一个UWP项目,需要设置复选框的框颜色。我看到我可以更改复选框的标签颜色,但不能更改框本身。XAML如何样式复选框的框颜色?

enter image description here

我的编码比较简单:

<CheckBox x:Name="cb1" Content="Checkbox" Foreground="#FFE01515"/> 

我用Google搜索网站的数字,我知道自定义模板是解决办法,但我不知道如何构建资源。

那么,如何设计复选框的样式?

回答

1

很快,你可以设置BorderBrush财产

如果你想确定自己的复选框风格采用默认风格,改变你想要什么

<!-- Default style for Windows.UI.Xaml.Controls.CheckBox --> 
     <Style TargetType="CheckBox"> 
      <Setter Property="Background" Value="Transparent" /> 
      <Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}"/> 
      <Setter Property="Padding" Value="8,5,0,0" /> 
      <Setter Property="HorizontalAlignment" Value="Left" /> 
      <Setter Property="VerticalAlignment" Value="Center" /> 
      <Setter Property="HorizontalContentAlignment" Value="Left"/> 
      <Setter Property="VerticalContentAlignment" Value="Top"/> 
      <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" /> 
      <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" /> 
      <Setter Property="MinWidth" Value="120" /> 
      <Setter Property="MinHeight" Value="32" /> 
      <Setter Property="UseSystemFocusVisuals" Value="True" /> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="CheckBox"> 
         <Grid Background="{TemplateBinding Background}" 
        BorderBrush="{TemplateBinding BorderBrush}" 
        BorderThickness="{TemplateBinding BorderThickness}"> 
          <VisualStateManager.VisualStateGroups> 
           <VisualStateGroup x:Name="CombinedStates"> 
            <VisualState x:Name="UncheckedNormal" /> 
            <VisualState x:Name="UncheckedPointerOver"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Stroke"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseHighBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="UncheckedPressed"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Fill"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlBackgroundBaseMediumBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Stroke"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightTransparentBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <DoubleAnimation Storyboard.TargetName="NormalRectangle" 
           Storyboard.TargetProperty="StrokeThickness" 
           To="{ThemeResource CheckBoxCheckedStrokeThickness}" 
           Duration="0" /> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="UncheckedDisabled"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Fill"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Stroke"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseLowBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" 
               Storyboard.TargetProperty="Foreground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseLowBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="CheckedNormal"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Fill"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAccentBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <DoubleAnimation Storyboard.TargetName="NormalRectangle" 
           Storyboard.TargetProperty="StrokeThickness" 
           To="{ThemeResource CheckBoxCheckedStrokeThickness}" 
           Duration="0" /> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Stroke"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltTransparentBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <DoubleAnimation Storyboard.TargetName="CheckGlyph" 
           Storyboard.TargetProperty="Opacity" 
           To="1" 
           Duration="0" /> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="CheckedPointerOver"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Fill"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAccentBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Stroke"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseHighBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <DoubleAnimation Storyboard.TargetName="CheckGlyph" 
           Storyboard.TargetProperty="Opacity" 
           To="1" 
           Duration="0" /> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="CheckedPressed"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Fill"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseMediumBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Stroke"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightTransparentBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <DoubleAnimation Storyboard.TargetName="NormalRectangle" 
           Storyboard.TargetProperty="StrokeThickness" 
           To="{ThemeResource CheckBoxCheckedStrokeThickness}" 
           Duration="0" /> 
              <DoubleAnimation Storyboard.TargetName="CheckGlyph" 
           Storyboard.TargetProperty="Opacity" 
           To="1" 
           Duration="0" /> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="CheckedDisabled"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Fill"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Stroke"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseLowBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph" 
               Storyboard.TargetProperty="Foreground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseLowBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" 
               Storyboard.TargetProperty="Foreground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseLowBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <DoubleAnimation Storyboard.TargetName="CheckGlyph" 
           Storyboard.TargetProperty="Opacity" 
           To="1" 
           Duration="0" /> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="IndeterminateNormal"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Stroke"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundAccentBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Fill"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightTransparentBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph" 
               Storyboard.TargetProperty="Foreground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundBaseMediumHighBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph" 
               Storyboard.TargetProperty="Glyph"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="&#xE73C;" /> 
              </ObjectAnimationUsingKeyFrames> 
              <DoubleAnimation Storyboard.TargetName="CheckGlyph" 
           Storyboard.TargetProperty="Opacity" 
           To="1" 
           Duration="0" /> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="IndeterminatePointerOver"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Stroke"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAccentBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Fill"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightTransparentBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph" 
               Storyboard.TargetProperty="Foreground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph" 
               Storyboard.TargetProperty="Glyph"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="&#xE73C;" /> 
              </ObjectAnimationUsingKeyFrames> 
              <DoubleAnimation Storyboard.TargetName="CheckGlyph" 
           Storyboard.TargetProperty="Opacity" 
           To="1" 
           Duration="0" /> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="IndeterminatePressed"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Stroke"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightBaseMediumBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Fill"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightTransparentBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph" 
               Storyboard.TargetProperty="Foreground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundBaseMediumBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph" 
               Storyboard.TargetProperty="Glyph"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="&#xE73C;" /> 
              </ObjectAnimationUsingKeyFrames> 
              <DoubleAnimation Storyboard.TargetName="CheckGlyph" 
           Storyboard.TargetProperty="Opacity" 
           To="1" 
           Duration="0" /> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="IndeterminateDisabled"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Fill"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle" 
               Storyboard.TargetProperty="Stroke"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseLowBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph" 
               Storyboard.TargetProperty="Foreground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseLowBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" 
               Storyboard.TargetProperty="Foreground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseLowBrush}" /> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph" 
               Storyboard.TargetProperty="Glyph"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="&#xE73C;" /> 
              </ObjectAnimationUsingKeyFrames> 
              <DoubleAnimation Storyboard.TargetName="CheckGlyph" 
           Storyboard.TargetProperty="Opacity" 
           To="1" 
           Duration="0" /> 
             </Storyboard> 
            </VisualState> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="20" /> 
           <ColumnDefinition Width="*" /> 
          </Grid.ColumnDefinitions> 
          <Grid VerticalAlignment="Top" Height="32"> 
           <Rectangle x:Name="NormalRectangle" 
         Fill="Transparent" 
         Stroke="{ThemeResource SystemControlForegroundBaseMediumHighBrush}" 
         StrokeThickness="{ThemeResource CheckBoxBorderThemeThickness}" 
         UseLayoutRounding="False" 
         Height="20" 
         Width="20" /> 
           <FontIcon x:Name="CheckGlyph" 
         FontFamily="{ThemeResource SymbolThemeFontFamily}" 
         Glyph="&#xE001;" 
         FontSize="20" 
         Foreground="Green" 
         Opacity="0" /> 
          </Grid> 
          <ContentPresenter x:Name="ContentPresenter" 
          ContentTemplate="{TemplateBinding ContentTemplate}" 
          ContentTransitions="{TemplateBinding ContentTransitions}" 
          Content="{TemplateBinding Content}" 
          Margin="{TemplateBinding Padding}" 
          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
          Grid.Column="1" 
          AutomationProperties.AccessibilityView="Raw" 
          TextWrapping="Wrap" /> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
+3

WPF,使事情,应该是简单的一个痛屁股自.NET 3.0 –

+0

谢谢Andrii Krupka。还有一个问题。我如何获得像上面那样的默认样式?我们说一个文本块。你如何在VS2015中获得它? –