利用 WPF 的 Trigger 系统,也可以很简单的只使用xmal实现三态按钮。在Window或UserControl的资源中声明按钮的style并加入触发功能。使用的时候直接在button里复写style就可以了,废话不多说,直接上代码:

<UserControl.Resources>
<Style x:Key="threeStateButton" TargetType="{x:Type Button}">
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<StackPanel Orientation="Horizontal" >
<Image Name="ImgBtnBg3"
Source="Skins/Default/action_normal.png" />
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Source"
Value="Skins/Default/action_selected.png"
TargetName="ImgBtnBg3"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Source"
Value="Skins/Default/action_active.png"
TargetName="ImgBtnBg3"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Source"
Value="Skins/Default/action_normal.png"
TargetName="ImgBtnBg3"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style> </UserControl.Resources>

使用时在button中引用:

<Button x:Name="m_btn" Content="Button" HorizontalAlignment="Center" Width="60" Height="60"
               VerticalAlignment="Center" Style="{StaticResource threeStateButton}"/>

最新文章

  1. socket编程-java
  2. SOA的浅析
  3. barabasilab-networkScience学习笔记5- Barab&#225;si-Albert 模型
  4. 更改电脑与eclpse热键冲突
  5. express cookie-session解惑
  6. [Leetcode][020] Valid Parentheses (Java)
  7. angular中的cookie读写
  8. R绘图字体解决方案(转)
  9. Spring常用注解介绍【经典总结】
  10. LANMP On CentOS 6
  11. Struts优缺点
  12. 当锚点遇到fixed
  13. BDD中数据的类型及处理方法(python)
  14. 谈下mysql预处理基础
  15. 网易2018校招内推编程题-堆棋子-C++实现
  16. Mysql相关技术细节整理
  17. 数据导出之winfrom导出word(一)
  18. 添加Image Stream(转)参考 开源容器云OpenShift
  19. SqlServer日期时间函数
  20. Mac OS X 在 Finder 里快速创建文本文件

热门文章

  1. c++ map迭代器
  2. Spring Web MVC处理流程
  3. 21.使用rescoring机制优化近似匹配搜索性能
  4. linux - redis基础
  5. seminar information (Email template)
  6. linux修改mysql表结构
  7. TSP服务商
  8. 学习webpack过程并上传到github
  9. android程序在调试时出现了套接字异常“java.net.SocketException: Permission denied”该如何解决
  10. [Android L or M ]解除SwitchPreference与Preference的绑定事件