通知公告
标准控件RadioButton的资源样式
日期:2015-12-15  发布人:admin  浏览量:206

1.简介
  RadioButton控件是一个单选控件,间接继承自ContentControl,因此其具有内容控件的一切特性,可以设置其控件模版(Template)和内容模版(ContentTemplate),而且此控件支持分组功能(GroupName相同的具有单选功能),其作用范围在同一个Window之内。
2.属性
2.1IsChecked
  类型:Boolean;
  功能:多选,支持三态功能(未选、已选、中间状态);
  说明:可通过此属性来触发CheckBox的外观样式变化。
2.2GroupName
  类型:String;
  功能:为多个RadioButton指定相同的GroupName支持单选;
  说明:不同GroupName的RadioButton可以同时选中。
3.事件
3.1ClickEvent
  功能:鼠标点击时触发此事件;
  说明:此事件是一个冒泡事件,会从当前控件向上依次触发,直到事件被处理或到达跟元素为止。

4.标准的资源样式
  下面是一个标准的RadioButton样式定义:
    <?xml encoding="utf-8" ?>
<ResourceDictionary Author="汪荣(QQ:386666951)" >

    <SolidColorBrush x:Key="radiobutton_br_normal" Color="#333333" />
    <SolidColorBrush x:Key="radiobutton_br_hot" Color="White" />
    <SolidColorBrush x:Key="radiobutton_fill" Color="White" />
    
    <!--单选按钮-->
    <Style TargetType="RadioButton">
        <Setter Property="BorderBrush" Value="{StaticResource radiobutton_br_normal}" />
        <Setter Property="Background" Value="{StaticResource radiobutton_fill}" />
        <Setter Property="Width" Value="12" />
        <Setter Property="Height" Value="12" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="RadioButton">
                    <DockPanel Orientation="Horizontal" >
                        <Grid VerticalAlignment="Center" >
                            <Ellipse Stroke="{TemplateBinding BorderBrush}" StrokeThickness="2" />
                            <Ellipse Name="CheckIcon" Fill="{TemplateBinding Background}" Margin="3" StrokeThickness="0" />
                        </Grid>
                        <ContentPresenter Margin="2,0,0,0" VerticalAlignment="Center" />
                    </DockPanel>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter Property="Visibility" TargetName="CheckIcon" Value="Visible" />
                        </Trigger>
                        <Trigger Property="IsChecked" Value="False">
                            <Setter Property="Visibility" TargetName="CheckIcon" Value="Hidden" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True" >
                <Setter Property="BorderBrush" Value="{StaticResource radiobutton_br_hot}" />
            </Trigger>
        </Style.Triggers>
    </Style>
</ResourceDictionary>