• ControlTemplate in WPF —— RadioButton


    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Shared.xaml" />
      </ResourceDictionary.MergedDictionaries>
    
      <!-- Focus Visual -->
    
    <!--<SnippetRadioButtonFocusVisual>-->
      <Style x:Key="RadioButtonFocusVisual">
        <Setter Property="Control.Template">
          <Setter.Value>
            <ControlTemplate>
              <Border>
                <Rectangle Margin="15,0,0,0"
                           StrokeThickness="1"
                           Stroke="#60000000"
                           StrokeDashArray="1 2" />
              </Border>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    <!--</SnippetRadioButtonFocusVisual>-->
    
      <!--<SnippetRadioButton>-->
      <Style x:Key="{x:Type RadioButton}"
             TargetType="{x:Type RadioButton}">
        <Setter Property="SnapsToDevicePixels"
                Value="true" />
        <Setter Property="OverridesDefaultStyle"
                Value="true" />
        <Setter Property="FocusVisualStyle"
                Value="{DynamicResource RadioButtonFocusVisual}" />
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="{x:Type RadioButton}">
              <BulletDecorator Background="Transparent">
                <BulletDecorator.Bullet>
                  <Grid Width="13"
                        Height="13">
                    <Ellipse x:Name="Border"
                             StrokeThickness="1">
                      <Ellipse.Stroke>
                        <LinearGradientBrush EndPoint="0.5,1"
                                             StartPoint="0.5,0">
                          <GradientStop Color="{DynamicResource BorderLightColor}"
                                        Offset="0" />
                          <GradientStop Color="{DynamicResource BorderDarkColor}"
                                        Offset="1" />
                        </LinearGradientBrush>
                      </Ellipse.Stroke>
                      <Ellipse.Fill>
                        <LinearGradientBrush StartPoint="0,0"
                                             EndPoint="0,1">
                          <LinearGradientBrush.GradientStops>
                            <GradientStopCollection>
                              <GradientStop Color="{DynamicResource ControlLightColor}" />
                              <GradientStop Color="{DynamicResource ControlMediumColor}"
                                            Offset="1.0" />
                            </GradientStopCollection>
                          </LinearGradientBrush.GradientStops>
                        </LinearGradientBrush>
                      </Ellipse.Fill>
                    </Ellipse>
                    <Ellipse x:Name="CheckMark"
                             Margin="4"
                             Visibility="Collapsed">
                      <Ellipse.Fill>
                        <SolidColorBrush Color="{DynamicResource GlyphColor}" />
                      </Ellipse.Fill>
                    </Ellipse>
                  </Grid>
                </BulletDecorator.Bullet>
                <VisualStateManager.VisualStateGroups>
                  <VisualStateGroup x:Name="CommonStates">
                    <VisualState x:Name="Normal" />
                    <VisualState x:Name="MouseOver">
                      <Storyboard>
                        <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
                                                      Storyboard.TargetProperty="(Shape.Fill).
                          (GradientBrush.GradientStops)[1].(GradientStop.Color)">
                          <EasingColorKeyFrame KeyTime="0"
                                               Value="{StaticResource ControlMouseOverColor}" />
                        </ColorAnimationUsingKeyFrames>
                      </Storyboard>
                    </VisualState>
                    <VisualState x:Name="Pressed">
                      <Storyboard>
                        <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
                                                      Storyboard.TargetProperty="(Shape.Fill).
                          (GradientBrush.GradientStops)[1].(GradientStop.Color)">
                          <EasingColorKeyFrame KeyTime="0"
                                               Value="{StaticResource ControlPressedColor}" />
                        </ColorAnimationUsingKeyFrames>
                      </Storyboard>
                    </VisualState>
                    <VisualState x:Name="Disabled">
                      <Storyboard>
                        <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
                                                      Storyboard.TargetProperty="(Shape.Fill).
                          (GradientBrush.GradientStops)[1].(GradientStop.Color)">
                          <EasingColorKeyFrame KeyTime="0"
                                               Value="{StaticResource ControlLightColor}" />
                        </ColorAnimationUsingKeyFrames>
                        <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
                                                      Storyboard.TargetProperty="(Shape.Stroke).
                          (GradientBrush.GradientStops)[1].(GradientStop.Color)">
                          <EasingColorKeyFrame KeyTime="0"
                                               Value="#40000000" />
                        </ColorAnimationUsingKeyFrames>
                        <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
                                                      Storyboard.TargetProperty="(Shape.Stroke).
                          (GradientBrush.GradientStops)[0].(GradientStop.Color)">
                          <EasingColorKeyFrame KeyTime="0"
                                               Value="#40000000" />
                        </ColorAnimationUsingKeyFrames>
                      </Storyboard>
                    </VisualState>
                  </VisualStateGroup>
                  <VisualStateGroup x:Name="CheckStates">
                    <VisualState x:Name="Checked">
                      <Storyboard>
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)"
                                                       Storyboard.TargetName="CheckMark">
                          <DiscreteObjectKeyFrame KeyTime="0"
                                                  Value="{x:Static Visibility.Visible}" />
                        </ObjectAnimationUsingKeyFrames>
                      </Storyboard>
                    </VisualState>
                    <VisualState x:Name="Unchecked" />
                    <VisualState x:Name="Indeterminate" />
                  </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
                <ContentPresenter Margin="4,0,0,0"
                                  VerticalAlignment="Center"
                                  HorizontalAlignment="Left"
                                  RecognizesAccessKey="True" />
              </BulletDecorator>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
      <!--</SnippetRadioButton>-->
    </ResourceDictionary>
  • 相关阅读:
    c# 图片保存为流Stream,再次加载时提示System.ArgumentOutOfRangeException: 要求非负数的解决办法
    VS 2019 Git failed with a fatal error的解决办法
    IIS安全狗卸载后,IIS8.5,网站无法访问的解决方法
    sqlserver 全文检索提高精确度的一个方法
    Win10应用商店打不开的解决办法
    Dapper解析嵌套的多层实体类
    Aspose.Words转换为PDF的时候字体丢失的问题解决
    IIS ASP.NET MVC 上传文件到NAS目录
    windows xp .net framework 4.0 HttpWebRequest 报The underlying connection was closed,基础连接已关闭
    c# 计算中文字节数与JAVA不符的解决方法
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/7410521.html
Copyright © 2020-2023  润新知