我正在寻找一个更简单的解决方案来单独设计radiobutton的bulletdecorator,并希望在这里展示我的解决方案,因为我没有找到任何好的例子。
<ControlTemplate TargetType="{x:Type RadioButton}" x:Key="RadioButtonControlTemplate">
<BulletDecorator Background="Transparent" Cursor="Hand">
<BulletDecorator.Bullet>
<Grid Height="15" Width="15">
<Ellipse x:Name="OffStyle" Margin="2" Fill="{DynamicResource RadioButtonOff}" Visibility="Visible" />
<Ellipse x:Name="OnStyle" Margin="2" Fill="{DynamicResource RadioButtonOn}" Visibility="Hidden" />
</Grid>
</BulletDecorator.Bullet>
</BulletDecorator>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="true">
<Setter TargetName="OnStyle" Property="Visibility" Value="Visible"/>
<Setter TargetName="OffStyle" Property="Visibility" Value="Hidden" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
你可以像这样使用它
<Viewbox Grid.Row="1" Height="50" Width="50">
<RadioButton GroupName="RadioButtonGroup" HorizontalAlignment="Center" Template="{StaticResource RadioButtonControlTemplate}" />
</Viewbox>
当单选按钮关闭或打开时,我也添加了一个样式
<DrawingBrush x:Key="RadioButtonOff" Stretch="Uniform">
<DrawingBrush.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Geometry="F1 M 224,3.79999C 345.889,3.79999 444.7,102.611 444.7,224.5C 444.7,346.389 345.889,445.2 224,445.2C 102.111,445.2 3.30006,346.389 3.30006,224.5C 3.30006,102.611 102.111,3.79999 224,3.79999 Z ">
<GeometryDrawing.Pen>
<Pen Thickness="3.312" LineJoin="Round" Brush="#FF5C5C5C"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Brush>
<RadialGradientBrush RadiusX="1.67044" RadiusY="1.67044" Center="0.5,0.5" GradientOrigin="0.5,0.5">
<RadialGradientBrush.GradientStops>
<GradientStop Color="#FFB9C3C6" Offset="0.253054"/>
<GradientStop Color="#FF5C6163" Offset="0.286441"/>
<GradientStop Color="#FF000000" Offset="0.329843"/>
</RadialGradientBrush.GradientStops>
<RadialGradientBrush.RelativeTransform>
<TransformGroup/>
</RadialGradientBrush.RelativeTransform>
</RadialGradientBrush>
</GeometryDrawing.Brush>
</GeometryDrawing>
<GeometryDrawing Geometry="F1 M 224.333,34.5277C 328.991,34.5277 413.833,119.37 413.833,224.028C 413.833,328.685 328.991,413.527 224.333,413.527C 119.675,413.527 34.8332,328.685 34.8332,224.028C 34.8332,119.37 119.675,34.5277 224.333,34.5277 Z ">
<GeometryDrawing.Pen>
<Pen Thickness="1.44" LineJoin="Round" Brush="#FF545454"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Brush>
<RadialGradientBrush RadiusX="0.958628" RadiusY="0.958628" Center="0.232275,0.223043" GradientOrigin="0.232275,0.223043">
<RadialGradientBrush.GradientStops>
<GradientStop Color="#FFE5EEF0" Offset="0.150862"/>
<GradientStop Color="#FF72797B" Offset="0.5"/>
<GradientStop Color="#FF000406" Offset="0.909483"/>
</RadialGradientBrush.GradientStops>
<RadialGradientBrush.RelativeTransform>
<TransformGroup/>
</RadialGradientBrush.RelativeTransform>
</RadialGradientBrush>
</GeometryDrawing.Brush>
</GeometryDrawing>
</DrawingGroup.Children>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
<DrawingBrush x:Key="RadioButtonOn" Stretch="Uniform">
<DrawingBrush.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Geometry="F1 M 224.3,4C 346.189,4 445,102.811 445,224.7C 445,346.589 346.189,445.4 224.3,445.4C 102.411,445.4 3.60013,346.589 3.60013,224.7C 3.60013,102.811 102.411,4 224.3,4 Z ">
<GeometryDrawing.Pen>
<Pen Thickness="3.312" LineJoin="Round" Brush="#FF5C5C5C"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Brush>
<RadialGradientBrush RadiusX="1.67044" RadiusY="1.67044" Center="0.5,0.5" GradientOrigin="0.5,0.5">
<RadialGradientBrush.GradientStops>
<GradientStop Color="#FFB9C3C6" Offset="0.253054"/>
<GradientStop Color="#FF5C8A99" Offset="0.286441"/>
<GradientStop Color="#FF00516A" Offset="0.329843"/>
</RadialGradientBrush.GradientStops>
<RadialGradientBrush.RelativeTransform>
<TransformGroup/>
</RadialGradientBrush.RelativeTransform>
</RadialGradientBrush>
</GeometryDrawing.Brush>
</GeometryDrawing>
<GeometryDrawing Geometry="F1 M 224.633,34.7277C 329.291,34.7277 414.133,119.57 414.133,224.228C 414.133,328.885 329.291,413.727 224.633,413.727C 119.975,413.727 35.1333,328.885 35.1333,224.228C 35.1333,119.57 119.975,34.7277 224.633,34.7277 Z ">
<GeometryDrawing.Pen>
<Pen Thickness="1.44" LineJoin="Round" Brush="#FF545454"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Brush>
<RadialGradientBrush RadiusX="0.958628" RadiusY="0.958628" Center="0.232275,0.223043" GradientOrigin="0.232275,0.223043">
<RadialGradientBrush.GradientStops>
<GradientStop Color="#FFE5EEF0" Offset="0.150862"/>
<GradientStop Color="#FF729FAE" Offset="0.5"/>
<GradientStop Color="#FF00516A" Offset="0.909483"/>
</RadialGradientBrush.GradientStops>
<RadialGradientBrush.RelativeTransform>
<TransformGroup/>
</RadialGradientBrush.RelativeTransform>
</RadialGradientBrush>
</GeometryDrawing.Brush>
</GeometryDrawing>
</DrawingGroup.Children>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
这里有result