WPF自定义开关切换按钮

突发奇想先要自己写一个开关按钮,说干就开干了,以下为View视图布局代码,开关按钮的样式就直接在这里定义了,主要呢通过定义触发器来完成按钮的切换。


```csharp
<Window x:Class="DEMO.View.StatusWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:DEMO.View"DataContext="{Binding Source={StaticResource Locator},Path=Status}"mc:Ignorable="d"Title="StatusWindow" Height="200" Width="250"><Window.Resources><ResourceDictionary><Style x:Key="ToggleButtonStyle" TargetType="{x:Type ToggleButton}"><Setter Property="Width" Value="45"></Setter><Setter Property="Height" Value="20"></Setter><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="ToggleButton"><!--定义视觉树--><Border x:Name="border" BorderThickness="1.5" CornerRadius="9" BorderBrush="#aaa" Background="#2790ff"><Grid x:Name="togglebutton" HorizontalAlignment="Right" ><Border Width="17" Height="17" CornerRadius="9" Background="White"/></Grid><!--阴影设置--><Border.Effect><DropShadowEffect Color="Gray" BlurRadius="5" ShadowDepth="0" Opacity="0.5" /></Border.Effect></Border><!--定义触发器--><ControlTemplate.Triggers><Trigger Property="IsChecked" Value="false"><Setter TargetName="border" Property="Background" Value="#ccc"/><Setter TargetName="togglebutton" Property="HorizontalAlignment" Value="Left"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style></ResourceDictionary></Window.Resources><Grid><StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"><ToggleButton Style="{StaticResource ToggleButtonStyle}" IsChecked="{Binding ToggleBtnIsCheck}"/><TextBlock Text="{Binding ToggleStatus}" Margin="10 0 0 0"/></StackPanel></Grid>
</Window>

再来看看页面搭好了就得看看开关按钮时相应的文字状态如何切换吧!新建一个ViewModel,去ViewModelLocator.cs注册好后,再去到页面绑定它,接下来看代码,如下,两个字段分别是状态文字和按钮状态,主要是运用三目运算符去设置。```csharppublic class StatusViewModel : ViewModelBase{private String toggleStatus;/// <summary>/// 开关状态/// </summary>public String ToggleStatus{get { return toggleStatus; }set { toggleStatus = value; RaisePropertyChanged(() => ToggleStatus); }}private bool toggleBtnIsCheck = true;/// <summary>/// 开关按钮/// </summary>public bool ToggleBtnIsCheck{get { return toggleBtnIsCheck; }set{toggleBtnIsCheck = value;RaisePropertyChanged(() => ToggleBtnIsCheck);ToggleStatus = toggleBtnIsCheck ? "开" : "关";}}}

写完了下面就启动运行看一下页面的效果吧!启动默认是开启的状态,移上去点击就关闭了,大家伙也快点去尝试一下吧!


那么本篇学习文章就分享到这里啦!若有不足的地方,还望请多多指教!

WPF自定义开关切换按钮相关推荐

  1. WPF自定义列中按钮的IsEnabled属性根据列中的值的不同动态赋值

    1.创建转换类,0为已读,让"阅"按钮不可用,即返回False public class ReadOrNoReadConverter : IValueConverter { pub ...

  2. WPF自定义带图标按钮

    控件: <Button Cursor="Hand" x:Name="btn_Return" Click="btn_Return_Click&qu ...

  3. android jni示例_Android切换按钮,开关示例

    android jni示例 Today we will learn about Android Toggle Button and Switch in android app. We'll discu ...

  4. WPF 动态切换按钮图片

    WPF动态切换按钮图片就是在鼠标移上去的时候显示另一张图片 首先先把三张图片放上去 第一张 第二张 第三张 然后给他们一个值,鼠标移上去的时候是true,显示图片,鼠标移开的时候显示false不显示图 ...

  5. 通过WPF自定义ListBox控件实现ListBoxItem中开关及删除功能

    通过WPF自定义ListBox控件实现类似CAD图层关闭与删除功能 文章目录 通过WPF自定义ListBox控件实现类似CAD图层关闭与删除功能 前言 一.程序界面设计 二.代码部分 2.1前端代码 ...

  6. swiper 4.X自定义文字 左右切换按钮

    swiper 4.X版本可以使 上下切换按钮自定义文字: 详情链接:https://wap.smilecmer.com/ztn/smile/ <script>var swiper = ne ...

  7. 封装一个完整版的uniapp图片和视频上传组件,拿来即用,可进行图片视频切换,可自定义上传按钮样式,删除按钮样式,可单独上传图片或者视频,可限制上传数量

    第一步 components里面新建一个manyImgUpload.vue组件,将以下代码放入 以下代码中需要你改的地方 uni.uploadFile中的参数,url为你公司的上传接口.files为你 ...

  8. VC++实现自定义切换按钮

    有时候要实现两个选项的切换,常规做法1是放两个Radio按钮控件,并设置这两个按钮为一组.2是放一个Check按钮控件.但感觉都不是那么理想和直观.有没有更好的实现方式呢?下面将给你介绍一种我自绘的控 ...

  9. Cesium 自定义二三维切换按钮

    有时我们不想用cesium自带的那个二三维切换,想自己写切换按钮,通过给按钮绑定事件,然后触发切换: 关键是切换事件怎么写,通过对源码的研究,还是找到了这个切换的事件: $("#to2d&q ...

最新文章

  1. 【图像识别】图像识别过程中,计算的图片大小多少为合适?
  2. 获取后台数据-Http
  3. 过程改进建设中的常见奖励措施
  4. rest服务调用方式实现eureka服务实例的增删改查
  5. 【drp 12】再识转发和重定向:SpringMVC无法跳转页面
  6. 方法内联在JVM中有多积极?
  7. WCF服务实例激活类型编程与开发(转)
  8. 网易云课堂解析_使用SQL分析网易云课堂职场提升类课程
  9. Java-WAS的Hello world
  10. C#學習基礎------事件和索引指示器
  11. centos7设置静态IP地址
  12. 表单防重复提交拦截器
  13. 【杜教BM模板】焦作网赛L
  14. 微信最火html5游戏平台,盘点五个热门HTML5游戏微信公众号
  15. 超实用硬盘数据恢复工具介绍!永久免费
  16. 基于jsp毕业设计题目50例
  17. 算法——和为K的连续子数组
  18. lect01_codes_高阶语法
  19. 王阳明心学 量子物理_量子物理学论文的文本分类
  20. VIM如何将全部内容复制并粘贴到外部

热门文章

  1. 类worksheet的paste方法无效_英雄档案——类人体
  2. 箱线图怎么看_K线的48种不同类型全解(建议收藏),教你怎么看懂K线图
  3. 没有计算机基础可以学python-零基础,没有编程和计算机基础,究竟该怎么自学python?...
  4. python从入门到精通 明日科技 电子书-python从入门到项目实践 (明日科技) 配套视频教程+源码...
  5. python资料-100G Python从入门到精通全套资料!
  6. python123-Python123
  7. 学python买什么书-关于 Python 的经典入门书籍有哪些?(python三大经典书)
  8. python电脑下载什么软件-python官网有几个下载文件?有什么不同?
  9. python import出错_python – ImportError:无法导入名称’app’
  10. mysql 远程 更改