用WPF自定义CheckBox的样式
在网上search到的CheckBox自定义样式的例子很少,可能是由于这方面的需求不多,大多数情况下都是采用系统默认下的样式就OK。但是随着技术的不断革新,像CheckBox这样的传统外观,也许会在项目中拖你的后腿。这里,我在WPF中自定义了CheckBox的新样式,也许不能满足你的实际需求,但是重点在于方法,而不是效果。
如何修改CheckBox的样式,方法当然是修改CheckBox的模板。但是当你开始编辑CheckBox的模板时,会发现不知道如何修改CheckBox的那个勾。
看了模板中的结构,只发现BulletChrome,但是这个东东也修改不了那个勾。只好在网上继续search,终于发现了方法。
我们不能修改BulletChrome,那就只能替换它。基本方法就是用一个Border和一个Path来替换这个BulletChrome;然后在xaml中重新定义trigger。
其中“gou”是一个path对象,随你画成其他形状。
然后定义trigger,也就是当ischecked=true时,显示“gou”;ischecked=false时,隐藏“gou”。
<TriggerProperty="IsChecked" Value="false">
<Setter TargetName="gou" Property="Visibility"Value="Hidden"/>
</Trigger>
<Trigger Property="IsChecked"Value="true">
<Setter TargetName="gou" Property="Visibility"Value="Visible"/>
</Trigger>
这样就实现了文章开头的效果。其实未必一定用border+path的组合来替换BulletChrome,或者用border+image等等,有待发挥了。