先看一下效果吧:
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,就可以了到现在,样式和动画就已经完成了,我们再把代码全部剪切到App.xaml这个项目资源文件下面,再删掉style的命名,x:Key="CheckBoxStyle1"删掉,
如许子我们的项目内里的checkbox就都是开关的样式了,运行项目也不会报错啦,最后的代码如下
下面是广告:
项目github地点:bearhanQ/WPFFramework: Share some experience (github.com)
QQ技术交流群:332035933;
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |