当前位置: 首页 > news >正文

C# WPF编程-ToggleButton

ToggleButton

在WPF中,ToggleButton是一个非常有用的控件,它允许用户在两种状态之间切换:选中(Checked)和未选中(Unchecked)。此外,还有一个中间状态叫做“不确定”(Indeterminate),但需注意的是,并不是所有的使用场景都需要或支持这个状态。下面将介绍如何使用ToggleButton,包括基本用法、样式定制以及事件处理。

<Window.Resources>
	<!-- 自定义ToggleButton样式 -->
    <Style TargetType="ToggleButton">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ToggleButton">
                    <Border Background="{TemplateBinding Background}" 
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            CornerRadius="10">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter Property="Background" Value="LightGreen"/>
                        </Trigger>
                        <Trigger Property="IsChecked" Value="False">
                            <Setter Property="Background" Value="LightGray"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

<StackPanel Orientation="Horizontal">
    <ToggleButton Content="切换按钮" HorizontalAlignment="Center" VerticalAlignment="Center" 
        Width="100" Height="50" IsChecked="False" Checked="ToggleButton_Changed" Unchecked="ToggleButton_Changed" Indeterminate="ToggleButton_Changed"/>
    <Label x:Name="labelToggleButtonState"/>
</StackPanel>
private void ToggleButton_Changed(object sender, RoutedEventArgs e)
{
    ToggleButton? toggleButton = sender as ToggleButton;
    if (toggleButton != null)
    {
        if (toggleButton.IsChecked == true)
        {
            labelToggleButtonState.Content = "选中状态";
        }
        else 
        {
            labelToggleButtonState.Content = "未选中状态";
        }
    }
}

相关文章:

  • 深入解析 SQL Server 锁机制:如何定位并解决表锁问题
  • OpenCV HighGUI 模块使用指南(Python 版)
  • SpringBoot + MinIO + kkFile 实现文件预览
  • 突破边界:Tauri 2.0全局状态管理的原子级实践
  • FreGS: 3D Gaussian Splatting with Progressive Frequency Regularization论文学习记录
  • SATA(Serial Advanced Technology Attachment)详解
  • Spring常用注解汇总
  • 虚拟机检测与反调试对抗技术
  • opengl中的旋转、平移、缩放矩阵生成函数
  • 力扣53.最大子数组和
  • CUL-CHMLFRP启动器 windows图形化客户端
  • 《深入剖析鸿蒙生态原生应用:一次开发多端部署的技术革新》
  • 23种设计模式-工厂方法(Factory Method)设计模式
  • ccfcsp2701如此编码
  • 统一开放世界与开放词汇检测:YOLO-UniOW无需增量学习的高效通用开放世界目标检测框架
  • 【机密计算顶会解读】11:ACAI——使用 Arm 机密计算架构保护加速器执行
  • FPGA中串行执行方式之计数器控制
  • snmp/mib采用子代理模式,编码,部署
  • 手抖的预防策略
  • 【USTC 计算机网络】第二章:应用层 - TCP UDP 套接字编程
  • 人民网三评“网络烂梗”:莫让低级趣味围猎青少年
  • 玉渊谭天丨卢拉谈美国降低对华关税:中国的行动捍卫了主权
  • 诠释微末处的丰盈:“上海制造佳品汇”首届海外专场即将亮相日本大阪
  • 马上评|“衣服越来越难买”,对市场是一个提醒
  • 人民日报评外卖平台被约谈:合法规范经营,公平有序竞争
  • 杭州钱塘区3宗涉宅用地均以底价成交,共计成交金额25.73亿元