铁佛 发表于 2024-8-16 18:41:06

WPF 怎么把checkbox改成开关样式

先看一下效果吧:
isChecked = false 的时候的效果
https://img2024.cnblogs.com/blog/2064545/202408/2064545-20240816160843041-1212345377.png
isChecked = true 的时候的效果
https://img2024.cnblogs.com/blog/2064545/202408/2064545-20240816164112105-2016564703.png
 然后我们来实现一下这个效果吧
第一步:创建一个空的wpf项目;
第二步:在项目内里添加一个checkbox
    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>这个时候的checkbox的样子是如许的
https://img2024.cnblogs.com/blog/2064545/202408/2064545-20240816164320825-1460165980.png
 第三步:在页面中右键checkbox,选择  编辑模板 ,再  编辑副本, 之后确定

https://img2024.cnblogs.com/blog/2064545/202408/2064545-20240816164525660-111270031.png
 vs就会给我们主动天生一个名为 ”CheckBoxStyle1” 的Checkbox的默认样式的代码,我们通过修改默认样式的代码,把普通的Checkbox酿成一个开关。

 第四步:修改默认样式
    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>            把之前的样式代码改成上面的代码,trigger部分,把报错的部分全部删除
这个时候,我们的开关样式就已经完成了
https://img2024.cnblogs.com/blog/2064545/202408/2064545-20240816164820136-952255523.png
 我们现在必要添加一些trigger和动画来实现切换效果
第五步:添加动画和trigger
    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>上面这段代码就是表示不同状态下的不同动画效果,通过改变SwitchBoder的宽度和对齐方式,就可以实现了
然后我们再把这段动画效果运用到模板中,再添加3个trigger,就可以了
    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>到现在,样式和动画就已经完成了,我们再把代码全部剪切到App.xaml这个项目资源文件下面,再删掉style的命名,x:Key="CheckBoxStyle1"删掉,
如许子我们的项目内里的checkbox就都是开关的样式了,运行项目也不会报错啦,最后的代码如下
 
    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>       
 
 
 
 下面是广告:
项目github地点:bearhanQ/WPFFramework: Share some experience (github.com)
QQ技术交流群:332035933;

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: WPF 怎么把checkbox改成开关样式