none
WPF中checkbox控件的三种状态之checked=null样式如何自定义 RRS feed

  • 问题

  • 当前使用.Net Framework 4.0 WPF开发一个界面,需要使用CheckBox控件,设置isThreeState= true使用三种状态,效果分别是未点击时白框,单击时显示对勾,再单击时显示中间一个小蓝框,分别对应checked值为false, true和 null。我现在需要的是,在checked值为null时,其显示效果如何由默认的蓝色框变为自定义的一个红叉图片(与对勾对应)的效果。
    谢谢。

    • 已编辑 neilhua 2014年6月1日 1:04 更正
    2014年5月31日 15:40

答案

  • 你好,

    对于你的需求,应该是需要自定义控件去实现,以下是我的模板:

    <Style x:Key="CustomCheckBox" TargetType="{x:Type CheckBox}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type CheckBox}">
                            <StackPanel Orientation="Horizontal" Height="15">
                                <Border BorderBrush="Black" BorderThickness="1">
                                    <Image x:Name="imageCheckBox" Source="/WpfCheckBoxThreeState;component/Images/CheckboxUnChecked.png" Width="15" Height="15" />
                                </Border>
                                <ContentPresenter VerticalAlignment="Center" />
                            </StackPanel>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsChecked" Value="False">
                                    <Setter TargetName="imageCheckBox" Property="Source" Value="/WpfCheckBoxThreeState;component/Images/CheckboxUnChecked.png" />
                                </Trigger>
    
                                <Trigger Property="IsChecked" Value="True">
                                    <Setter TargetName="imageCheckBox" Property="Source" Value="/WpfCheckBoxThreeState;component/Images/CheckboxChecked.png" />
                                </Trigger>
    
                                <Trigger Property="IsChecked" Value="{x:Null}" >
                                    <Setter TargetName="imageCheckBox" Property="Source" Value="/WpfCheckBoxThreeState;component/Images/SomethingElse.png" />
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

    对于IsChecked为null, True, False的三种不同情况,设置不同的Source做为背景, 如下图:


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年6月2日 6:59
    版主