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

WPF学习(8)- Button按钮

1. 用法解析

Button因为继承了ButtonBase,而ButtonBase又继承了ContentControl,所以,Button可以通过设置Content属性来设置要显示的内容。例如

<Button Content="确定"/>

我们使用Button的时机,通常是鼠标点击事件需要有响应操作时,所以,Button的Click事件是最好的选择。

public class Button : ButtonBase
{public static readonly DependencyProperty IsDefaultProperty;public static readonly DependencyProperty IsCancelProperty;public static readonly DependencyProperty IsDefaultedProperty;public Button();public bool IsDefault { get; set; }public bool IsCancel { get; set; }public bool IsDefaulted { get; }protected override void OnClick();protected override AutomationPeer OnCreateAutomationPeer();}
  • IsDefault:用户通过按 ENTER 键时调用的默认按钮。
  • IsCancel:用户可以通过按 ESC 键来激活取消按钮。
  • IsDefaulted:获取按钮是否为按 ENTER 键时调用的默认按钮。

2. 案例

前端代码

    <Button x:Name="_button" Content="退出" Width="100" Height="25" Click="_button_Click" IsDefault="True"/>

后端代码

    public partial class MainWindow{public MainWindow(){InitializeComponent();}private void _button_Click(object sender, RoutedEventArgs e){this.Close();}}

在这里插入图片描述

3. 属性解析

x:Name和Name的区别

第一个设置是x:Name="_button"。首先要解释x:Name是什么意思。在这里的x表示一个命令空间,也就是xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml",Name指的是这个控件的名称。请注意,由于Button继承了FrameworkElement类,而FrameworkElement类也有一个Name属性,但是这里设置的x:Name="_button"并不是引用了FrameworkElement类的Name属性,而是指在xaml中为Button定义了一个叫“_button"的名称,并把这个“_button"映射到了Button的Name属性上,以便于我们在后端可以通过”_button“去引用这个按钮。

也就是说,如果某个控件本身也有一个Name属性,那么前端的x:Name就赋值给控件Name属性。

Content属性

用来设置Button的显示内容,除了是字符串,也可以设置为其它内容,比如一个图标、一个其它元素。

Width属性

Width也不是Button本身的属性,而是FrameworkElement的宽度,由于Button继承了FrameworkElement,所以Width就成了按钮的宽度属性。

Height属性

与上面的Width类似,同属于FrameworkElement的高度属性,在此成了Button的高度属性。

Click事件

Click是一个事件,但不是Button的事件,而是它的基类ButtonBase的事件,事件和委托概念关系密切,因为要订阅一个事件,需要写一个回调函数,而这个回调函数的签名要和这个事件的声明委托签名保持一致。

IsDefault属性

这个属性是Button自身的属性,这里设置为true,表示这个button是一个默认按钮。
this.Close()表示关闭当前窗体。

通过C#代码订阅事件

还可以通过C#代码提供的事件订阅符号+=去订阅事件,将上面的例子修改一下,去掉在xaml中的订阅方式,在后端代码的构造函数中订阅事件。

前端代码

<Button Name="_button" Content="退出" Width="100" Height="25" IsDefault="True"/>

后端代码

 /// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();_button.Click += _button_Click;}private void _button_Click(object sender, RoutedEventArgs e){this.Close();}}

相关文章:

WPF学习(8)- Button按钮

1. 用法解析 Button因为继承了ButtonBase&#xff0c;而ButtonBase又继承了ContentControl&#xff0c;所以&#xff0c;Button可以通过设置Content属性来设置要显示的内容。例如 <Button Content"确定"/>我们使用Button的时机&#xff0c;通常是鼠标点击事件…...

Flutter GPU 是什么?为什么它对 Flutter 有跨时代的意义?

Flutter 3.24 版本引入了 Flutter GPU 概念的新底层图形 API flutter_gpu &#xff0c;还有 flutter_scene 的 3D 渲染支持库&#xff0c;它们目前都是预览阶段&#xff0c;只能在 main channel 上体验&#xff0c;并且依赖 Impeller 的实现。 Flutter GPU 是 Flutter 内置的底…...

第6章>>实验7:PS(ARM)端Linux RT与PL端FPGA之间(通过Memory存储器进行通信和交互)《LabVIEW ZYNQ FPGA宝典》

1、实验内容 上一节实验里面介绍的Reg寄存器通道比较适合在PS端和PL端之间传递标量数据&#xff0c;也就是单个元素&#xff0c;如果要传递多个元素的数组或者连续数据流的话&#xff0c;Reg寄存器通道就不是很合适了。 本节实验我们向大家讲解如何借助Memory存储器通道在PS&am…...

通用前端的学习

通用前端的概念 通用前端的概念是我自创的&#xff0c;也是我多年开发全栈时的个人理解&#xff0c;结合自己对各种语言的比较&#xff0c;发现前端都具有几个特征&#xff0c;而这几个特征&#xff0c;很多人只能用具体的表象来描述&#xff0c;比如用安卓方式来说明&#xf…...

git本地仓库关联多个远程仓库时git pull失败问题

目录 问题描述 原因 解决办法 1.多个远程仓库需有继承关系 2.一句命令实现创建本地分支且与远程分支关联 问题描述 今天操作本地仓库时&#xff0c;关联了两个远程仓库&#xff0c;欲在本地仓库创建一个分支&#xff0c;与第二个远程仓库的某个分支关联&#xff0c;然后将…...

人工智能(AI)、Web 3.0和元宇宙三者联系、应用及未来发展趋势的详细分析

人工智能&#xff08;AI&#xff09;、Web 3.0和元宇宙作为当前科技领域的热门话题&#xff0c;它们之间存在着紧密的联系&#xff0c;并在各自领域内展现出广泛的应用和未来的发展趋势。以下是对这三者联系、应用及未来发展趋势的详细分析&#xff1a; 一、人工智能&#xff…...

【IEEE出版 | 高校主办】第三届人工智能、物联网和云计算技术国际会议(AIoTC 2024)

第三届人工智能、物联网和云计算技术国际会议&#xff08;AIoTC 2024&#xff09; 2024 3rd International Conference on Artificial Intelligence, Internet of Things and Cloud Computing Technology 2024年9月13-15日 | 中国武汉 重要信息 大会官网&#xff1a;www.ic…...

PTA 7-4 BCD解密

7-4 BCD解密&#xff08;10分&#xff09; BCD数是用一个字节来表达两位十进制的数&#xff0c;每四个比特表示一位。所以如果一个BCD数的十六进制是0x12&#xff0c;它表达的就是十进制的12。但是小明没学过BCD&#xff0c;把所有的BCD数都当作二进制数转换成十进制输出了。于…...

计算机网络中拥塞控制的门限值怎么设置

拥塞避免的门限值设置主要涉及到加权随机早期检测&#xff08;‌WRED&#xff09;‌技术&#xff0c;‌这是一种拥塞避免机制&#xff0c;‌通过为每个队列设定一对低门限和高门限值来实现。‌具体来说&#xff0c;‌当队列长度小于低门限时&#xff0c;‌不丢弃报文&#xff0…...

解锁肥胖焦虑的枷锁:拥抱自我,健康前行

在这个颜值经济盛行、信息爆炸的时代&#xff0c;肥胖似乎成了许多人心中难以言说的痛。社交媒体上满屏的“A4腰”、“锁骨养鱼”&#xff0c;无形中给大众套上了一层名为“肥胖焦虑”的沉重枷锁。但请相信&#xff0c;真正的美丽与幸福&#xff0c;从不以体重秤上的数字为衡量…...

WPF学习(7)- Control基类+ContentControl类(内容控件)+ButtonBase基类

前面给大家介绍完了WPF所有的布局控件&#xff0c;属性以及使用案例&#xff0c;从这里咱们就开始学下内容控件。 Control基类 Control是许多控件的基类。比如最常见的按钮&#xff08;Button&#xff09;、单选(RadioButton)、复选&#xff08;CheckBox&#xff09;、文本框…...

moka实习生一面0607

java支持哪些数据类型 byte、short、int、long、boolean、char、float、double int取值范围- 2^31~2^31-1 什么是包装类 基础数据类型相应的对象&#xff0c;用于需要对象的地方使用这些基本数据类型。 Integer inull;int ji;会怎样&#xff0c;会报什么错误 会报java.lang.Nul…...

centos开启samba服务

centos开启samba服务 一、安装二、配置 一、安装 1.检查是否已有samba组件&#xff0c;如已经安装则会显示对应信息 rpm -qa|grep samba2.执行安装命令 yum -y install samba二、配置 1.创建samba用户 pdbedit -a centos_smb11.编辑配置文件/etc/samba/smb.conf,替换为如下…...

2024年8月一区SCI-海市蜃楼优化算法Fata morgana algorithm-附Matlab免费代码

引言 本期介绍了一种基于地球物理的高效优化方法名为海市蜃楼优化算法Fata morgana algorithm&#xff0c;FATA的元启发式算法。通过模拟海市蜃楼的形成过程&#xff0c;FATA分别设计了海市蜃楼滤光原理(MLF)和光传播策略(LPS)。该成果于2024年8月最新上线在JCR 1区&#xff0…...

【编程笔记】解决移动硬盘无法访问文件或目录损坏且无法读取

解决移动硬盘无法访问文件或目录损坏且无法读取 只解决&#xff1a;移动硬盘无法访问文件或目录损坏且无法读取 问题 由于频繁下载数据&#xff0c;多次安装虚拟机导致磁盘无法被系统识别。磁盘本身是好的&#xff0c;只是不能被识别&#xff0c;如果将磁盘格式化&#xff0c…...

行为型模式(一)策略模式

目录 1. 介绍 2. 目的 3. 实践 1. 介绍 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了一系列算法&#xff0c;将每种算法封装成具体的策略类&#xff0c;并使它们可以互相替换。策略模式使得算法可以独立于客户端而变化&#x…...

JAVA中的Wrapper类

ava中的Wrapper类&#xff0c;也称为包装类&#xff0c;是Java提供的一组特殊类&#xff0c;它们将基本数据类型&#xff08;如int、char、double等&#xff09;封装为对象。这种封装提供了基本数据类型所不具备的功能&#xff0c;如类型转换、序列化、以及在集合&#xff08;如…...

在没有硬盘的情况下进行电脑数据迁移

电脑数据迁移方式 在更换电脑的时候需要进行文件的传输&#xff0c;但是没有硬盘可以选择使用网线直连或者无线文件共享。通用配置 1.将旧电脑的文件夹或者磁盘设置文件共享 找到指定的文件夹右键属》属性&#xff0c;点击共享》点击高级共享 选择共享文件夹以及修改共享用户…...

C++转Java基础知识

目录 1. Java基础知识 1.1 JDK和JVM 1.2 Java基础代码演示 1.3 Java中的注释 1.4 Java中的关键字 1.5 Java中的println和print的区别 2. Java中的数据类型 2.1 常量 2.2 标识符 2.3 变量 2.4 类型转换 2.5 自动类型转换 2.6 强制类型转换 3. 运算符 3.1 自增运算…...

搭建jenkins一键部署java项目

一、搭建jenkins 链接: https://pan.baidu.com/s/1jzx15PiyI8EhLd_vg7q8bw 提取码: ydhl 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 直接使用docker导入镜像&#xff0c;运行就好 docker run -di --name jenkins -p 8080:8080 -v /home/jenkins_home:/var/je…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

Spring Boot + MyBatis 集成支付宝支付流程

Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例&#xff08;电脑网站支付&#xff09; 1. 添加依赖 <!…...

flow_controllers

关键点&#xff1a; 流控制器类型&#xff1a; 同步&#xff08;Sync&#xff09;&#xff1a;发布操作会阻塞&#xff0c;直到数据被确认发送。异步&#xff08;Async&#xff09;&#xff1a;发布操作非阻塞&#xff0c;数据发送由后台线程处理。纯同步&#xff08;PureSync…...

用鸿蒙HarmonyOS5实现国际象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码&#xff0c;使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...

Linux入门课的思维导图

耗时两周&#xff0c;终于把慕课网上的Linux的基础入门课实操、总结完了&#xff01; 第一次以Blog的形式做学习记录&#xff0c;过程很有意思&#xff0c;但也很耗时。 课程时长5h&#xff0c;涉及到很多专有名词&#xff0c;要去逐个查找&#xff0c;以前接触过的概念因为时…...