坐看雲起 发表于 2024-8-16 22:57:43

WPF 怎么把checkbox改成开关样式

先看一下效果吧:
isChecked = false 的时候的效果

isChecked = true 的时候的效果

 然后我们来实现一下这个效果吧
第一步:创建一个空的wpf项目;
第二步:在项目里面添加一个checkbox
    <Grid>
      <CheckBox HorizontalAlignment="Center" IsChecked="True"
                  BorderBrush="Black" VerticalAlignment="Center"
                  Content="switch" Background="#FF00ADFF"/>
    </Grid>这个时候的checkbox的样子是这样的

 第三步:在页面中右键checkbox,选择  编辑模板 ,再  编辑副本, 之后确定


 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部分,把报错的部分全部删除
这个时候,我们的开关样式就已经完成了

 我们现在需要添加一些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;

来源:https://www.cnblogs.com/lvpp13/p/18363225
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: WPF 怎么把checkbox改成开关样式