WPF CheckBox样式,选中颜色切换与选中动画效果

6 篇文章 0 订阅
3 篇文章 0 订阅

先上效果:

 该样式适用于 Caheck与ToggleButton,关键部分已标色(喜欢的点个赞)

  <Style x:Key="chkBullet" TargetType="CheckBox">
        <Setter Property="IsChecked" Value="False"/>
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="Foreground" Value="#999"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="CheckBox">
                    <Border x:Name="borderOut" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" CornerRadius="8" Background="{TemplateBinding Background}" >
                        <Grid>
                            <Border x:Name="border" Width="18" Height="18" CornerRadius="9" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="1 0" Background="White">
                                <Border.RenderTransform>
                                    <TranslateTransform  X="0"/>
                                </Border.RenderTransform>
                            </Border>
                            <TextBlock x:Name="txt" Text="{TemplateBinding Content}" Margin="9 0" VerticalAlignment="Center" Foreground="White" >
                                <TextBlock.RenderTransform>
                                    <TranslateTransform   X="18"></TranslateTransform>
                                </TextBlock.RenderTransform>
                            </TextBlock>
                        </Grid>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="true">
                            <Setter Property="Text" TargetName="txt" Value="{Binding Tag,RelativeSource={RelativeSource TemplatedParent}}"/>
                            <Setter Property="Background" TargetName="borderOut" Value="{Binding Background,RelativeSource={RelativeSource TemplatedParent}}"/>
                            <Trigger.EnterActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation Storyboard.TargetName="border" Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" To="40" Duration="00:00:0.2"/>
                                        <DoubleAnimation Storyboard.TargetName="txt" Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" To="0" Duration="00:00:0.2"/>

                                    </Storyboard>
                                </BeginStoryboard>
                            </Trigger.EnterActions>
                            <Trigger.ExitActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation Storyboard.TargetName="border" Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" To="0" Duration="00:00:0.2"/>
                                        <DoubleAnimation Storyboard.TargetName="txt" Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" To="18" Duration="00:00:0.2"/>
                                    </Storyboard>
                                </BeginStoryboard>
                            </Trigger.ExitActions>
                        </Trigger>
                        <Trigger Property="IsChecked" Value="False">
                            <Setter Property="Text" TargetName="txt" Value="{Binding Content,RelativeSource={RelativeSource TemplatedParent}}"/>
                            <Setter Property="Background" TargetName="borderOut" Value="{Binding BorderBrush,RelativeSource={RelativeSource TemplatedParent}}"/>

                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 当WPF中的CheckBox选中时,可以通过Checked事件来触发相应的事件处理程序。例如,可以在Checked事件处理程序中编写代码来更新UI或执行其他操作。同时,也可以使用IsChecked属性来检查CheckBox选中状态。 ### 回答2: WPFCheckBox控件可以通过绑定IsChecked属性实现选中状态的与数据绑定。当用户勾选或取消勾选CheckBox时,IsChecked属性的值会自动更新。因此,我们可以利用这一机制来触发事件。 首先,在XAML中给CheckBox添加Checked和Unchecked事件: <CheckBox x:Name="checkBox" Checked="checkBox_Checked" Unchecked="checkBox_Unchecked" Content="选项"/> 然后,在对应的事件处理程序中编写逻辑代码: private void checkBox_Checked(object sender, RoutedEventArgs e) { // 添加选中事件的逻辑代码 } private void checkBox_Unchecked(object sender, RoutedEventArgs e) { // 添加取消选中事件的逻辑代码 } 当用户勾选或取消勾选该CheckBox时,对应的事件处理程序将会被调用,从而执行相应逻辑代码。 此外,我们还可以通过Command属性实现命令绑定。例如,我们可以定义一个RelayCommand类来代表选中事件的命令: public class CheckCommand : ICommand { public bool CanExecute(object parameter) { return true; } public event EventHandler CanExecuteChanged; public void Execute(object parameter) { // 添加选中事件的逻辑代码 } } 然后,在XAML中给CheckBox添加Command属性: <CheckBox x:Name="checkBox" Command="{Binding CheckCommand}" Content="选项"/> 最后,在ViewModel中绑定CheckCommand属性即可: public class MainViewModel { public ICommand CheckCommand { get; set; } public MainViewModel() { CheckCommand = new CheckCommand(); } } 当用户勾选或取消勾选该CheckBox时,CheckCommand的Execute方法将会被调用,从而执行选中事件的逻辑代码。 ### 回答3: WPF中的CheckBox是一种UI控件,它可以选择或取消选择一个选项。当一个CheckBox选中或取消选中时,我们可以通过事件来响应这个变化。 首先,我们需要在XAML代码中定义一个CheckBox控件,并为其绑定Checked和Unchecked事件。例如: <CheckBox Content="CheckBox" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" /> 此时,当CheckBox选中时,会触发CheckBox_Checked事件,当CheckBox被取消选中时,会触发CheckBox_Unchecked事件。 然后,我们需要在代码中定义CheckBox_Checked和CheckBox_Unchecked事件的处理函数,并在其中编写我们需要执行的代码。例如: private void CheckBox_Checked(object sender, RoutedEventArgs e) { // 选中事件处理 // TODO: 编写需要执行的代码 } private void CheckBox_Unchecked(object sender, RoutedEventArgs e) { // 取消选中事件处理 // TODO: 编写需要执行的代码 } 在以上处理函数中,我们可以编写我们需要执行的代码,例如根据CheckBox选中状态来改变界面显示,或者执行其他相关操作。 总之,通过WPFCheckBox的Checked和Unchecked事件,我们可以方便地响应CheckBox选中状态的变化,从而实现相关操作的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值