首页 > 代码库 > WPF 样式设计之——radioButton

WPF 样式设计之——radioButton

如何在WPF的cs文件中定义图片RadioButton呢?
把图片加到了resource文件里面,希望在窗口中显示图片radiobutton,请问这样的radiobutton应该怎么定义呢?以下为处理的样式:

XML code

<RadioButton.Style>
    <Style TargetType="{x:Type RadioButton}">
        <Style.Resources>
            <Style x:Key="CheckRadioFocusVisual">
                <Setter Property="Control.Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <Rectangle
                                Margin="14,0,0,0"
                                StrokeThickness="1"
                                Stroke="Black"
                                StrokeDashArray="1 2"
                                SnapsToDevicePixels="true"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Style.Resources>
        <Setter Property="Foreground" Value="http://www.mamicode.com/{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
        <Setter Property="Background" Value="http://www.mamicode.com/Transparent"/>
        <Setter Property="BorderBrush" Value="http://www.mamicode.com/#dddddd"/>
        <Setter Property="BorderThickness" Value="http://www.mamicode.com/1"/>
        <Setter Property="HorizontalAlignment" Value="http://www.mamicode.com/Center"/>
        <Setter Property="VerticalAlignment" Value="http://www.mamicode.com/Center"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type RadioButton}">
                    <BulletDecorator Background="Transparent">
                        <BulletDecorator.Bullet>
                            <!-- 这里是修改过的部分 开始 -->
                            <Border
                                Background="{TemplateBinding Background}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
                                VerticalAlignment="{TemplateBinding VerticalAlignment}"
                                SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">
                                <Image x:Name="PART_Image" Width="12">
                                    <Image.Source>
                                        <DrawingImage>
                                            <DrawingImage.Drawing>
                                                <GeometryDrawing Brush="OrangeRed" Geometry="M 0 0 L 3.5 4 L 7 0 Z"/>
                                            </DrawingImage.Drawing>
                                        </DrawingImage>
                                    </Image.Source>
                                    <Image.Effect>
                                        <DropShadowEffect BlurRadius="1" Opacity="0.75" ShadowDepth="0"/>
                                    </Image.Effect>
                                </Image>
                            </Border>
                            <!-- 这里是修改过的部分 结束 -->
                        </BulletDecorator.Bullet>
                        <ContentPresenter
                            Margin="{TemplateBinding Padding}"
                            VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                            RecognizesAccessKey="True"/>
                    </BulletDecorator>
                    <ControlTemplate.Triggers>
                        <Trigger Property="HasContent"
                                    Value="http://www.mamicode.com/true">
                            <Setter Property="FocusVisualStyle"
                                    Value="http://www.mamicode.com/{StaticResource CheckRadioFocusVisual}"/>
                            <Setter Property="Padding"
                                    Value="http://www.mamicode.com/4,0,0,0"/>
                        </Trigger>
                        <Trigger Property="IsEnabled"
                                    Value="http://www.mamicode.com/false">
                            <Setter Property="Foreground"
                                    Value="http://www.mamicode.com/{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                        </Trigger>
                        <!-- 自定义触发器 开始 -->
                        <Trigger Property="IsChecked" Value="http://www.mamicode.com/true">
                            <Setter TargetName="PART_Image" Property="Source">
                                <Setter.Value>
                                    <DrawingImage>
                                        <DrawingImage.Drawing>
                                            <GeometryDrawing Brush="OrangeRed" Geometry="M 0,4 L 3.5,0 L 7,4 Z"/>
                                        </DrawingImage.Drawing>
                                    </DrawingImage>
                                </Setter.Value>
                            </Setter>
                        </Trigger>
                        <!-- 自定义触发器 结束 -->
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</RadioButton.Style>

WPF 样式设计之——radioButton