一、先用path画一下轮廓
?| 1 2 3 4 5 6 7 |
<path stroke="red" strokethickness="1" margin="10" strokedashcap="round">
<path.data>
<geometrygroup>
<pathgeometry figures="m 4,40 a 16,13 0 1 1 10,45 l 3,48 z" />
</geometrygroup>
</path.data>
</path>
|
| 1 2 3 4 5 6 7 8 9 10 |
<path stroke="red" strokethickness="1" strokedashcap="round" margin="50">
<path.data>
<geometrygroup>
<pathgeometry figures="m 12,30 a 6,10 0 1 1 18,30 l 30,40 l 30,45 l 0,45 l 0,40z" />
<pathgeometry figures="m 25,25 l 35,25"/>
<pathgeometry figures="m 28,30 l 35,30"/>
<pathgeometry figures="m 32,35 l 35,35"/>
</geometrygroup>
</path.data>
</path>
|
路径图如下

二、将路径应用的样式里
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
<!--聊天按钮的样式-->
<style x:key="chatstyle" targettype="{x:type radiobutton}">
<setter property="focusvisualstyle" value="{staticresource buttonfocusvisual}"/>
<setter property="background" value="transparent"/>
<setter property="borderbrush" value="transparent"/>
<setter property="borderthickness" value="0"/>
<setter property="foreground" value="{dynamicresource {x:static systemcolors.controltextbrushkey}}"/>
<setter property="horizontalcontentalignment" value="center"/>
<setter property="verticalcontentalignment" value="center"/>
<setter property="padding" value="1"/>
<setter property="template">
<setter.value>
<controltemplate targettype="{x:type radiobutton}">
<border>
<path x:name="btnpath" strokethickness="1" stroke="gray" fill="#ff3e3e40">
<path.data>
<geometrygroup>
<pathgeometry figures="m 4,40 a 16,13 0 1 1 10,45 l 3,48 z" />
</geometrygroup>
</path.data>
</path>
</border>
<controltemplate.triggers>
<trigger property="ischecked" value="true">
<setter property="fill" value="#ff14d212" targetname="btnpath"/>
<setter property="stroke" value="#ff14d212" targetname="btnpath"/>
</trigger>
<trigger property="ismouseover" value="true">
<setter property="stroke" value="white" targetname="btnpath"/>
</trigger>
<multitrigger>
<multitrigger.conditions>
<condition property="ischecked" value="true"/>
<condition property="ismouseover" value="true"/>
</multitrigger.conditions>
<multitrigger.setters>
<setter property="stroke" value="#ff14d212" targetname="btnpath"/>
</multitrigger.setters>
</multitrigger>
</controltemplate.triggers>
</controltemplate>
</setter.value>
</setter>
</style>
<!--通讯录的样式-->
<style x:key="friendstyle" targettype="{x:type radiobutton}">
<setter property="focusvisualstyle" value="{staticresource buttonfocusvisual}"/>
<setter property="background" value="transparent"/>
<setter property="borderbrush" value="transparent"/>
<setter property="borderthickness" value="0"/>
<setter property="foreground" value="{dynamicresource {x:static systemcolors.controltextbrushkey}}"/>
<setter property="horizontalcontentalignment" value="center"/>
<setter property="verticalcontentalignment" value="center"/>
<setter property="padding" value="1"/>
<setter property="template">
<setter.value>
<controltemplate targettype="{x:type radiobutton}">
<border>
<path x:name="btnpath" strokethickness="1" stroke="gray" fill="#ff3e3e40">
<path.data>
<geometrygroup>
<pathgeometry figures="m 12,30 a 6,10 0 1 1 18,30 l 30,40 l 30,45 l 0,45 l 0,40z" />
<pathgeometry figures="m 25,25 l 35,25"/>
<pathgeometry figures="m 28,30 l 35,30"/>
<pathgeometry figures="m 32,35 l 35,35"/>
</geometrygroup>
</path.data>
</path>
</border>
<controltemplate.triggers>
<trigger property="ischecked" value="true">
<setter property="fill" value="#ff14d212" targetname="btnpath"/>
<setter property="stroke" value="#ff14d212" targetname="btnpath"/>
</trigger>
<trigger property="ismouseover" value="true">
<setter property="stroke" value="white" targetname="btnpath"/>
</trigger>
<multitrigger>
<multitrigger.conditions>
<condition property="ischecked" value="true"/>
<condition property="ismouseover" value="true"/>
</multitrigger.conditions>
<multitrigger.setters>
<setter property="stroke" value="#ff14d212" targetname="btnpath"/>
</multitrigger.setters>
</multitrigger>
</controltemplate.triggers>
</controltemplate>
</setter.value>
</setter>
</style>
|
看下效果图

注意要点有几个:
1、path原来必须要有填充,也就是说fill必须要有值,否则会认为是透明,点击不到。
2、一定要设置multitrigger,否则当button被选中的时候,鼠标划过,依然会变白色。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/ZXdeveloper/archive/2016/10/25/5997372.html








发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。