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

【WPF】02 按钮控件圆角配置及状态切换

在这里插入图片描述

按钮圆角

先从工具箱里拖进来一个Button控件,然后对这个按钮进行美化。

首先在 xaml 里按钮控件部分 添加如下代码:

<Button x:Name="btnLogin" Content="登录" HorizontalAlignment="Center" Margin="0,399,0,0" VerticalAlignment="Top" 
       Background="#FF696565" Foreground="White" Width="200" Height="32" Grid.Column="1" Click="btnLogin_Click" FontSize="16">
   <Button.Resources>
       <Style TargetType="{x:Type Border}">
           <Setter Property="CornerRadius" Value="4"/>
           <Setter Property="BorderBrush" Value="#c1d0dc"/>
       </Style>
   </Button.Resources>
</Button>

这里引入了按钮的资源 Button.Resources,在这里设置按钮的类型及边框的颜色等,圆角的大小可以修改 这里的值即可。
实现效果如下:

在这里插入图片描述

状态切换

在有圆角的情况下,再进行按钮的状态切换就比较麻烦了,WPF不想C# 的winform窗体控件那样,直接通过修改Enable属性即可,WPF中使用到的是IsEnable属性来控制,如果不在前面做好资源配置,这个属性控制将会出问题,切换效果无法实现。

IsEnabled属性

IsEnabled属性是一个布尔值(Boolean),它决定了按钮控件是否处于启用状态。当IsEnabled设置为true时,按钮是可交互的,用户可以点击它,并且如果按钮有与之关联的事件处理器(如点击事件),那么这些事件处理器将被触发。相反,当IsEnabled设置为false时,按钮将变得不可交互,用户无法点击它,并且与之关联的任何事件处理器都不会被触发。

本次要实现的切换是 通过触发将此按钮底色变灰不可操作,再触发将其变蓝可以操作,同时将文本信息修改掉。

这里先要在xmal中添加如下代码段用于调整背景色和前景色:

<Window.Resources>
    <Style x:Key="CustomButtonStyle" TargetType="Button">
        <Setter Property="Background" Value="LightBlue"/>
        <!-- 默认背景色 -->
        <Setter Property="Foreground" Value="Gray"/>
        <!-- 默认前景色(文本颜色) -->
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Background="{TemplateBinding Background}"  
                        BorderBrush="Gray"  
                        BorderThickness="1"  
                        CornerRadius="3">
                        <ContentPresenter HorizontalAlignment="Center"  
                                      VerticalAlignment="Center"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="Background" Value="Gray"/>
                            <!-- 禁用时的背景色 -->
                            <Setter Property="Foreground" Value="LightGray"/>
                            <!-- 禁用时的前景色(可选) -->
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

在CSharp中的代码实现如下:

private void btn1_Click(object sender, RoutedEventArgs e)
{
	this.btnSelect.Content = "变灰不可用";
	this.btnSelect.IsEnabled = false;
	this.btnSelect.Background = new SolidColorBrush(Colors.Gray);
}

private void btn2_Click(object sender, RoutedEventArgs e)
{
	this.btnSelect.Content = "变蓝可用";
	this.btnSelect.IsEnabled = true;
	this.btnSelect.Background = new SolidColorBrush(Colors.Blue);
}

实现效果如下:
在这里插入图片描述
在这里插入图片描述
这样操作的目的就是为了保证圆角效果的同时,在按钮状态变化的时候可以能完美切换。

好了,下一篇将讲述如何动态添加控件,一种比较复杂的添加效果。

相关文章:

  • c#的委托、事件
  • Html css样式总结
  • 【SemeDrive】【X9H】SPI 通讯 —— 应用层到驱动层的调用
  • ByteCinema(1):用户的登录注册
  • Leetcode—1014. 最佳观光组合【中等】
  • Win11家庭版找不到gpedit.msc文件怎么办
  • 植物大战僵尸【源代码分享+核心思路讲解】
  • 深度学习02-pytorch-06-张量的形状操作
  • C++离线查询
  • 变压器设备漏油数据集 voc txt
  • QT 中中文乱码的问题处理
  • java重点学习-设计模式
  • 【Elasticsearch】-图片向量化存储
  • [数据集][目标检测]智慧养殖场肉鸡目标检测数据集VOC+YOLO格式3548张1类别
  • 828华为云征文|部署在线文件管理器 Spacedrive
  • 解决SVN蓝色问号的问题
  • 在HTML中添加图片
  • Kalman算法、扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波(UKF)的比较
  • 物品识别——基于python语言
  • 【Obsidian】当笔记接入AI,Copilot插件推荐
  • 李强会见巴西总统卢拉
  • 字母哥动了离开的心思,他和雄鹿队的缘分早就到了头
  • 福州千余公共道路泊车位装“智能地锁”续:运营公司被责令改正并罚款
  • 特朗普开启第二任期首次外访:中东行主打做生意,不去以色列
  • 长三角议事厅·周报|从模速空间看上海街区化AI孵化模式
  • 区域国别学视域下的东亚文化交涉