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

devtools/2024/11/14 13:01:13/

在这里插入图片描述

按钮圆角

先从工具箱里拖进来一个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);
}

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

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


http://www.ppmy.cn/devtools/114485.html

相关文章

nginx和php-fpm连接超时的相关配置以及Nginx中的try_files以及root、alias的使用

一、nginx和php-fpm连接超时的相关配置 线上的PHP服务器架构大都是nginx proxy->nginx web->php-fpm。在服务器运行正常&#xff0c;服务器之间的连接正常&#xff0c;未被防火墙阻止的情况下&#xff0c;对这种架构排查504报错时需要注意以下几个地方的参数。 1是nginx…

electron多标签页模式更像客户端

Electron多标签页模式是指在Electron框架中实现的类似Web浏览器的多标签页功能。Electron是一个使用Web技术&#xff08;HTML、CSS和JavaScript&#xff09;来创建跨平台桌面应用程序的框架。在Electron中实现多标签页模式&#xff0c;通常需要借助一些特定的库或组件&#xff…

硬件基础知识

驱动开发分为&#xff1a;裸机驱动、linux驱动 嵌入式&#xff1a;以计算机技术为基础&#xff0c;软硬结合的、可移植、可剪裁的专用计算机 单片机最小单元&#xff1a;vcc gnd reset 晶振 cpu --- soc :system on chip 片上外设 所有的程序都是在soc&#xff08;cpu&…

【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】003 - vmlinux.lds 链接脚本文件源码分析

【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】003 - vmlinux.lds 链接脚本文件源码分析 系列文章汇总:《鸿蒙OH-v5.0源码分析之 Uboot+Kernel 部分】000 - 文章链接汇总》 本文链接:《【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】003 - vmlinux.lds 链接脚本文件源码分析》 …

密集行人数据集 CrowdHumanvoc和yolo两种格式,yolo可以直接使用train val test已经划分好有yolov8训练200轮模型

密集行人数据集 CrowdHuman voc和yolo两种格式&#xff0c;yolo可以直接使用 train val test已经划分好 有yolov8训练200轮模型。 CrowdHuman 密集行人检测数据集 数据集描述 CrowdHuman数据集是一个专为密集行人检测设计的数据集&#xff0c;旨在解决行人密集场景下的检测挑…

合理使用布局

一、ArkUI框架执行流程 在使用ArkUI开发中&#xff0c;我们通过布局组件和基础组件进行界面描述&#xff0c;这些描述会呈现出一个组件树的结构&#xff0c;基础组件在其中为叶子结点&#xff0c;布局组件则是中间节点&#xff0c;可以把这棵树称之为应用组件树。当用户执行交互…

php环境搭建教程

PHP环境搭建教程 在构建和开发PHP应用程序时&#xff0c;搭建一个稳定、高效的PHP环境是基础且关键的一步。本教程将详细介绍如何在不同操作系统&#xff08;Windows和Linux&#xff09;上搭建PHP环境&#xff0c;包括Apache服务器的安装与配置、PHP的安装与配置、MySQL的安装…

dedecms(四种webshell姿势)

步骤一&#xff0c;登录网站 步骤二&#xff0c;进入后台 账号密码同为admin 姿势一&#xff0c;通过文件管理器上传WebShell 登陆到后台点击 【核心】--》【文件式管理器】【文件上传】 将准备好的一句话代码上传...OK 1.我们先创建一个1.php上传 2.上传之后我们双击1.php 3…