WPF 自定义一个Button控件,通过设置3个张图片,实现:平常状态、鼠标移入、鼠标按下时分别显示3张图片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 自定义一个Button控件,通过设置3个张图片,实现:平常状态、鼠标移入、鼠标按下时分别显示3张图片相关的知识,希望对你有一定的参考价值。

使用时这么写:
<local:MyButton Normal="images/normal.png" High="images/high.png" Down="images/down.png"/>

wpf的控件可以使用trigger(触发器)来更改控件不同状态下的显示。
例如你要设置鼠标按下时字体的大小
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="FontSize" Value="20"/>
</Trigger>
</Style.Triggers>
按照你的目标,你首先要修改button的模板。在button的template里加
<Grid>
<Image Name="img1" Source="/WpfApplication1;component/Image/1.jpg" Visibility="Visible"/>
<Image Name="img2" Source="/WpfApplication1;component/Image/2.jpg" Visibility="Collapsed"/>
<Image Name="img3" Source="/WpfApplication1;component/Image/3.jpg" Visibility="Collapsed"/>
</Grid>
然后修改相应的trigger即可。
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="img1" Property="Visibility" Value="Collapsed"/>
<Setter TargetName="img2" Property="Visibility" Value="Visible"/>
<Setter TargetName="img3" Property="Visibility" Value="Collapsed"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="img1" Property="Visibility" Value="Collapsed"/>
<Setter TargetName="img2" Property="Visibility" Value="Collapsed"/>
<Setter TargetName="img3" Property="Visibility" Value="Visible"/>
</Trigger>
参考技术A 使用这种写法的话,就不是定义样式和触发器的作法了,你得继承一下Button,然后定义依赖项属性。
代码就不在这里写了,麻烦,百度Hi上说吧
参考技术B 不需要自定义控件,那是winform的做法。
使用style和触发器
或者修改控件模板。

以上是关于WPF 自定义一个Button控件,通过设置3个张图片,实现:平常状态、鼠标移入、鼠标按下时分别显示3张图片的主要内容,如果未能解决你的问题,请参考以下文章

WPF自定义控件,自定义控件中由多个button组成,如何给每个button添加不同事件处理?

WPF 自定义模板 Button闪亮效果

WPF编程之自定义Button控件样式

WPF自定义控件之带倒计时的按钮--Button

WPF自定义button按钮控件

WPF 在控件中添加自定义属性