










依旧是使用Blend来查看RadioButton的默认样式和模板
1 <Style x:Key="FocusVisual"> 2 <Setter Property="Control.Template"> 3 <Setter.Value> 4 <ControlTemplate> 5 <Rectangle Margin="2" StrokeDashArray="1 2" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" SnapsToDevicePixels="true" StrokeThickness="1"/> 6 </ControlTemplate> 7 </Setter.Value> 8 </Setter> 9 </Style> 10 <Style x:Key="OptionMarkFocusVisual"> 11 <Setter Property="Control.Template"> 12 <Setter.Value> 13 <ControlTemplate> 14 <Rectangle Margin="14,0,0,0" StrokeDashArray="1 2" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" SnapsToDevicePixels="true" StrokeThickness="1"/> 15 </ControlTemplate> 16 </Setter.Value> 17 </Setter> 18 </Style> 19 <SolidColorBrush x:Key="RadioButton.Static.Background" Color="#FFFFFFFF"/> 20 <SolidColorBrush x:Key="RadioButton.Static.Border" Color="#FF707070"/> 21 <SolidColorBrush x:Key="RadioButton.Static.Glyph" Color="#FF212121"/> 22 <SolidColorBrush x:Key="RadioButton.MouseOver.Background" Color="#FFF3F9FF"/> 23 <SolidColorBrush x:Key="RadioButton.MouseOver.Border" Color="#FF5593FF"/> 24 <SolidColorBrush x:Key="RadioButton.MouseOver.Glyph" Color="#FF212121"/> 25 <SolidColorBrush x:Key="RadioButton.Pressed.Background" Color="#FFD9ECFF"/> 26 <SolidColorBrush x:Key="RadioButton.Pressed.Border" Color="#FF3C77DD"/> 27 <SolidColorBrush x:Key="RadioButton.Pressed.Glyph" Color="#FF212121"/> 28 <SolidColorBrush x:Key="RadioButton.Disabled.Background" Color="#FFE6E6E6"/> 29 <SolidColorBrush x:Key="RadioButton.Disabled.Border" Color="#FFBCBCBC"/> 30 <SolidColorBrush x:Key="RadioButton.Disabled.Glyph" Color="#FF707070"/> 31 <Style x:Key="RadioButtonStyle1" TargetType="{x:Type RadioButton}"> 32 <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/> 33 <Setter Property="Background" Value="{StaticResource RadioButton.Static.Background}"/> 34 <Setter Property="BorderBrush" Value="{StaticResource RadioButton.Static.Border}"/> 35 <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 36 <Setter Property="BorderThickness" Value="1"/> 37 <Setter Property="Template"> 38 <Setter.Value> 39 <ControlTemplate TargetType="{x:Type RadioButton}"> 40 <Grid x:Name="templateRoot" Background="Transparent" SnapsToDevicePixels="True"> 41 <Grid.ColumnDefinitions> 42 <ColumnDefinition Width="Auto"/> 43 <ColumnDefinition Width="*"/> 44 </Grid.ColumnDefinitions> 45 <Border x:Name="radioButtonBorder" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="100" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="1,1,2,1" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> 46 <Grid x:Name="markGrid" Margin="2"> 47 <Ellipse x:Name="optionMark" Fill="{StaticResource RadioButton.Static.Glyph}" MinWidth="6" MinHeight="6" Opacity="0"/> 48 </Grid> 49 </Border> 50 <ContentPresenter x:Name="contentPresenter" Grid.Column="1" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 51 </Grid> 52 <ControlTemplate.Triggers> 53 <Trigger Property="HasContent" Value="true"> 54 <Setter Property="FocusVisualStyle" Value="{StaticResource OptionMarkFocusVisual}"/> 55 <Setter Property="Padding" Value="4,-1,0,0"/> 56 </Trigger> 57 <Trigger Property="IsMouseOver" Value="true"> 58 <Setter Property="Background" TargetName="radioButtonBorder" Value="{StaticResource RadioButton.MouseOver.Background}"/> 59 <Setter Property="BorderBrush" TargetName="radioButtonBorder" Value="{StaticResource RadioButton.MouseOver.Border}"/> 60 <Setter Property="Fill" TargetName="optionMark" Value="{StaticResource RadioButton.MouseOver.Glyph}"/> 61 </Trigger> 62 <Trigger Property="IsEnabled" Value="false"> 63 <Setter Property="Background" TargetName="radioButtonBorder" Value="{StaticResource RadioButton.Disabled.Background}"/> 64 <Setter Property="BorderBrush" TargetName="radioButtonBorder" Value="{StaticResource RadioButton.Disabled.Border}"/> 65 <Setter Property="Fill" TargetName="optionMark" Value="{StaticResource RadioButton.Disabled.Glyph}"/> 66 </Trigger> 67 <Trigger Property="IsPressed" Value="true"> 68 <Setter Property="Background" TargetName="radioButtonBorder" Value="{StaticResource RadioButton.Pressed.Background}"/> 69 <Setter Property="BorderBrush" TargetName="radioButtonBorder" Value="{StaticResource RadioButton.Pressed.Border}"/> 70 <Setter Property="Fill" TargetName="optionMark" Value="{StaticResource RadioButton.Pressed.Glyph}"/> 71 </Trigger> 72 <Trigger Property="IsChecked" Value="true"> 73 <Setter Property="Opacity" TargetName="optionMark" Value="1"/> 74 </Trigger> 75 <Trigger Property="IsChecked" Value="{x:Null}"> 76 <Setter Property="Opacity" TargetName="optionMark" Value="0.56"/> 77 </Trigger> 78 </ControlTemplate.Triggers> 79 </ControlTemplate> 80 </Setter.Value> 81 </Setter> 82 </Style>
https://github.com/zhaotianff/cnblog-demo-code/tree/main/WPFStyleAndTemplateDemo
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。