WPF事件处理器+x名称空间
目录
编辑
一、事件处理器知识点
1. XAML中的事件绑定
2. C#中的事件处理方法
3. 方法签名解释
4. 命名规范
工作流程
二、导入引用名称空间
三、x名称空间及其常用元素
(1)x名称空间的由来和作用
(2)x名称空间里都有些什么
1. Attribute(属性)
2. 标签扩展
3. XAML指令元素
使用特点
(3)x:ClassModifier
(4)x:Name
使用场景区别
x:Name 的两个作用
“如果对象有Name属性,会自动设置为相同的值”是什么意思
为什么要设置Name属性?
(4)x:FieldModifier
作用:控制XAML中控件生成的C#字段的访问级别
访问级别冲突
XAML是声明性语言,每见到一个标签声明一个实例。
每个XAML标签 = 创建一个对象
举例说明
XAML代码(声明性):
<Grid><Button Content="点击我"/><TextBox Text="输入框"/>
</Grid>
等价的C#代码(命令性):
Grid grid = new Grid(); // <Grid> 创建Grid实例
Button button = new Button(); // <Button> 创建Button实例
button.Content = "点击我";
TextBox textBox = new TextBox(); // <TextBox> 创建TextBox实例
textBox.Text = "输入框";grid.Children.Add(button);
grid.Children.Add(textBox);
一、事件处理器知识点
1. XAML中的事件绑定
<Button Click="button1_Click"/>
Click
是事件名button1_Click
是对应的C#方法名- 这样就把按钮点击和后台方法关联起来了
2. C#中的事件处理方法
private void button1_Click(object sender, RoutedEventArgs e)
{MessageBox.Show("Hello WPF!");
}
3. 方法签名解释
object sender
: 触发事件的控件(这里是那个Button)RoutedEventArgs e
: 事件相关信息- 返回类型必须是
void
4. 命名规范
- 通常用:
控件名_事件名,比如
button1_Click
工作流程
- 用户点击按钮
- WPF查找
button1_Click
方法 - 执行方法内的代码
- 显示消息框
二、导入引用名称空间
三、x名称空间及其常用元素
(1)x名称空间的由来和作用
xmlns:x
是XAML的标准名称空间声明x
是约定俗成的前缀名,代表XAML本身的功能- 这个URL
http://schemas.microsoft.com/winfx/2006/xaml
是微软定义的XAML规范地址
(2)x名称空间里都有些什么
x名称空间里的内容分为三大类:
1. Attribute(属性)
最常用的一类,直接作为属性使用:
x:Name
- 给控件命名,方便代码访问x:Key
- 资源的唯一标识符x:FieldModifier
- 控制字段访问级别x:Shared
- 控制资源是否共享x:Subclass
- 指定子类x:TypeArguments
- 泛型类型参数x:Uid
- 本地化标识符
2. 标签扩展
需要用花括号 {}
语法:
x:Null
- 表示空值{x:Null}
x:Static
- 访问静态成员{x:Static local:MyClass.StaticProperty}
x:Type
- 获取类型信息{x:Type Button}
3. XAML指令元素
作为XML元素使用:
x:Code
- 内嵌代码块x:XData
- 包装原始数据
使用特点
- Attribute: 直接写在标签上
<Button x:Name="btn1"/>
- 标签扩展: 用花括号
Value="{x:Static SystemColors.ControlBrush}"
- 指令元素: 作为子元素
<x:Code>...</x:Code>
(3)x:ClassModifier
class modify在编程中是指类修饰符,它主要用于控制类的访问级别。当类的class modifier设为public时,意味着该类可以从程序集外部访问;若设为private,则表示该类只能在当前程序集中被访问,外部无法直接访问。
(4)x:Name
使用场景区别
1. WPF控件(派生自FrameworkElement)
x:Name="btn1"
和Name="btn1"
效果相同- 一般WPF控件都可以用两种方式
2. 非WPF控件(不派生自FrameworkElement)
- 只能用
x:Name="xxx"
- 不能用
Name
属性
x:Name 的两个作用
1. 声明引用变量
<Button x:Name="myButton"/>
- 在C#代码中可以直接用
myButton
访问这个按钮 - 变量名就是x:Name的值
2. 设置Name属性
- 如果对象有Name属性,会自动设置为相同的值
- 相当于
Name="myButton"
“如果对象有Name属性,会自动设置为相同的值”是什么意思
XAML代码:
<Button x:Name="saveButton" Content="保存"/>
WPF自动做了两件事:
1. 创建C#变量(这个总是会做的)
Button saveButton; // 让你在C#代码中可以用saveButton访问
2. 设置Name属性(只有控件有Name属性才会做)
saveButton.Name = "saveButton"; // 把控件本身的Name属性也设置了
在C#代码中测试:
private void TestButton()
{// 第1个作用:可以通过变量访问saveButton.Content = "新内容";// 第2个作用:Name属性也被设置了MessageBox.Show(saveButton.Name); // 显示 "saveButton"
}
- 变量名 和 Name属性值 是同一个字符串
x:Name="abc"
→ 变量名是abc
,控件的Name属性也是"abc"
为什么要设置Name属性?
有些WPF功能需要通过Name属性查找控件:
// 通过Name属性查找控件
Button found = (Button)this.FindName("saveButton");
简单说:x:Name既创建了变量,又给控件起了内部名字。
(4)x:FieldModifier
作用:控制XAML中控件生成的C#字段的访问级别
XAML代码:
<TextBox x:FieldModifier="private" x:Name="textBox1" .../>
C#代码:
WindowHappy wh = new WindowHappy();
wh.textBox1.Text = "I'm happy!"; // 这行代码有问题!
wh.ShowDialog();
访问级别冲突
x:FieldModifier="private"
生成私有字段- 但C#代码试图从外部访问
wh.textBox1
- private字段不能被外部访问!
相关文章:

WPF事件处理器+x名称空间
目录 编辑 一、事件处理器知识点 1. XAML中的事件绑定 2. C#中的事件处理方法 3. 方法签名解释 4. 命名规范 工作流程 二、导入引用名称空间 三、x名称空间及其常用元素 (1)x名称空间的由来和作用 (2)x名称空间里都有…...

具身智能:OpenAI 的真正野心与未来展望
提到 ChatGPT,你对它的第一印象是什么?是担心它会威胁到工程师的工作,还是觉得它只是个会说空话的工具?或许你正在学习一些简单的教程,试图用它来建立知识库,自动化日常工作,觉得它不过如此&…...
mybatis的mapper对应的xml写法
文章目录 前置mapper 对应 xml 基础配置mapper 对应 xml 复杂配置Mapper 中的相关注解其他 前置 你使用 javamybatis/mybatis plus 如果你使用 mybatis plus,也是会向下兼容 mybatis 的 mapper 对应 xml 基础配置 <?xml version"1.0" encoding&q…...

Lyra学习笔记2 GFA_AddComponents与ULyraPlayerSpawningManagerComponent
目录 前言GameFeatureAction_AddComponentsULyraPlayerSpawningManagerComponent缓存所有PlayerStart位置选择位置 前言 1.以control模式为例 2.比较散,想单独拿出一篇梳理下Experience的流程 GameFeatureAction_AddComponents 这部分建议看 《InsideUE5》GameFeatu…...

个人健康中枢的多元化AI软件革新与精准健康路径探析
引言 人工智能技术的迅猛发展正在重塑医疗健康领域的服务模式和用户体验。随着多模态大模型、MCP协议、A2A协议和思考链算法等创新技术的出现,个人健康中枢正在经历一场深刻的软件革新。这些技术不仅打破了传统健康管理系统的信息孤岛,还通过多维度数据整合和深度推理能力,…...
使用 Redis 作为向量数据库
一、什么是向量数据库? 向量(Vector):在机器学习和 AI 中,向量是由一系列数字组成的序列,用于数值化地描述数据的特征或语义。文本、图像、音频等非结构化数据可以通过模型转换成固定长度的向量。 向量数据…...

Matlab实现LSTM-SVM时间序列预测,作者:机器学习之心
Matlab实现LSTM-SVM时间序列预测,作者:机器学习之心 目录 Matlab实现LSTM-SVM时间序列预测,作者:机器学习之心效果一览基本介绍程序设计参考资料 效果一览 基本介绍 该代码实现了一个结合LSTM和SVM的混合模型,用于时间…...
美国服务器文件系统的基本功能和命令
文件系统的核心功能是实现数据的存储与组织。美国服务器支持多种文件系统类型(如EXT4、NTFS、ZFS等),每种文件系统通过树状目录结构管理文件和文件夹,并为每个文件分配唯一标识符(如Inode或NTFS索引)。以下是具体操作步骤: 创建文件系统 使…...
开源软件协议大白话分类指南
开源软件协议分类对比表 协议类型代表协议核心规则允许/禁止操作适合场景宽松型MIT、Apache 2.0允许免费使用、修改、商用,可闭源,但需保留原作者版权声明。✅ 闭源商用 ⚠️ 必须署名快速开发商用软件(如APP、网站)强开源型GPL…...

JAVA 集合的进阶 泛型的继承和通配符
1 泛型通配符 可以对传递的类型进行限定 1.1 格式 ? 表示不确定的类型 ?extends E: 表示可以传递 E 或者 E 所有的子类类型 ?super E: 表示可以传递 E 或者 E 所有的父类类…...
机器学习与深度学习05-决策树01
目录 前文回顾1.决策树的基本原理2.构建决策树的划分准则3.决策树中如何避免过拟合4.决策树的剪枝操作 前文回顾 上一篇文章链接:地址 1.决策树的基本原理 决策树(Decision Tree)是一种用于分类和回归问题的机器学习模型。它是一个树状结构…...

下一代液晶显示底层技术与九天画芯的技术突围
一、液晶产业:撑起数字经济的显示脊梁 (一)全球显示市场的核心支柱 作为电子信息产业的战略基石,液晶显示(LCD)占据全球平板显示市场超 60% 的份额,2022 年全球市场规模达 782.41 亿元…...

[NOIP 2001 普及组] 求先序排列 Java
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String infixOrder sc.nextLine(); // 中序String postOrder sc.nextLine(); // 后序sc.close();System.out.println(preOrder(infixOrder, postOrder))…...

Rockey Linux 安装ffmpeg
1.环境准备 Rockey linux 9.2 ffmpeg 静态资源包 这个是我自己的: https://download.csdn.net/download/liudongyang123/90920340https://download.csdn.net/download/liudongyang123/90920340 这个是官网的 Releases BtbN/FFmpeg-Builds GitHub 以上两个资…...

STM32 Modbus RTU从机开发实战:核心实现与五大调试陷阱解析
知识点1【CRC校验】 CRC校验生成网址 CRC(循环冗余校验)在线计算_ip33.com 知识点2【代码演示】 代码书写思路 代码演示 main.c #include "stm32f10x.h" #include "stm32f10x_conf.h" #include "rs485.h"int main(voi…...

Python----目标检测(《Fast R-CNN》和Fast R-CNN)
一、《Fast R-CNN》 1.1、基本信息 作者:Ross Girshick 机构:Microsoft Research 发表时间:2015年 论文链接:arXiv:1504.08083 代码开源:GitHub仓库(MIT License) 1.2、主要内容 Fast R…...

iEKF的二维应用实例
如果熟悉 EKF 与卡尔曼的推导的话,iEKF 就比较容易理解,关于卡尔曼滤波的推导以及EKF,可以参考以前的文章: 卡尔曼滤波原理:https://blog.csdn.net/a_xiaoning/article/details/130564473?spm1001.2014.3001.5502 E…...
机器学习中的线性回归:从理论到实践的深度解析
一、引言 线性回归(Linear Regression)是机器学习和统计学中最基础且应用广泛的模型之一,用于预测连续型目标变量。它通过建立输入特征与输出变量之间的线性关系,实现对未知数据的预测。无论是预测房价、股票走势,还是…...

【通关文件操作(下)】--文件的顺序读写(续),sprintf和sscanf函数,文件的随机读写,文件缓冲区,更新文件
目录 四.文件的顺序读写(续) 4.8--fwrite函数 4.9--fread函数 五.sprintf函数和sscanf函数 5.1--函数对比 5.2--sprintf函数 5.3--sscanf函数 六.文件的随机读写 6.1--fseek函数 6.2--ftell函数 6.3--rewind函数 七.文件缓冲区 7.1--fflush函数 八.更新文件 &…...

mysql的Memory引擎的深入了解
目录 1、Memory引擎介绍 2、Memory内存结构 3、内存表的锁 4、持久化 5、优缺点 6、应用 前言 Memory 存储引擎 是 MySQL 中一种高性能但非持久化的存储方案,适合临时数据存储和缓存场景。其核心优势在于极快的读写速度,需注意数据丢失风险和内存占…...
尚硅谷-尚庭公寓部署文档
文章目录 整合版部署文档部署架构图1. 项目目录结构增加注释的 Dockerfile 配置(1) 后端服务1 Dockerfile (backend/service1/Dockerfile)(2) 后端服务2 Dockerfile (backend/service2/Dockerfile) Dockerfile 配置说明重要注意事项3. Nginx 配置(1) 主配置文件 (nginx/nginx.c…...
使用函数证明给定的三个数是否能构成三角形
问题描述 给定三条边,请你判断一下能不能组成一个三角形。 输入数据第一行包含一个数M,接下有M行,每行一个实例,包含三个正数A,B,C。其中A,B,C <1000; 对于每个测试实例,如果三条边长A,B,C能组成三角形的话&#x…...

【数据结构】——二叉树堆(下)
一、堆中两个重要的算法 我们前面学习了树的概念和结构,还要树的一种特殊树--二叉树,然后我们学习了堆,知道了堆分为大堆和小堆,接下来我们就使用堆来进行一个排序。 在学习我们的堆排序前,我们先详细学习一下我们堆…...

t009-线上代驾管理系统
项目演示地址 摘 要 使用旧方法对线上代驾管理系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在线上代驾管理系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题…...
目标检测预测框置信度(Confidence Score)计算方式
预测框的置信度(Confidence Score)是目标检测模型输出的一个关键部分,它衡量了模型对一个预测框中包含特定类别对象的确定程度。 不同的目标检测模型(如Faster R-CNN、SSD、YOLO、DETR等)在计算置信度时有其特有的机制…...

【题解-洛谷】B4295 [蓝桥杯青少年组国赛 2022] 报数游戏
题目:B4295 [蓝桥杯青少年组国赛 2022] 报数游戏 题目描述 某班级男生人数为 X X X 人,女生人数为 Y Y Y 人,现全班同学围成一个圆圈,并按照顺时针方向为每名同学编号(从 1 1 1 到 X Y XY XY)。现给…...

Bootstrap项目 - 个人作品与成就展示网站
文章目录 前言一、项目整体概述1. 项目功能介绍1.1 导航栏1.2 首页模块1.3 关于我模块1.4 技能模块1.5 作品模块1.6 成就模块1.7 博客模块1.8 联系我模块 2. 技术选型说明 二、项目成果展示1. PC端展示1.1 首页1.2 关于我1.3 技能1.4 作品1.5 成就1.6 博客1.7 联系我 2. 移动端…...

新能源汽车霍尔线束介绍
新能源汽车作为传统燃油车的重要替代方案,其核心驱动系统依赖于高效、精准的电子控制技术。在这一体系中,霍尔线束作为关键传感器组件,承担着电机转速、位置信号的实时采集与传输任务,其性能直接影响整车动力输出的稳定性和能量利…...
2023网络应用专业-Python程序设计复习题目
2023技校网络应用专业-Python程序设计复习题目 须知: 个人信息要填写正确,在线答题时间不限,可以反复作答,次数不限,最后取最高分。 第一部分:单选题 1. 在Python交互模式下,输入下面代码: >>> “{0:.2f}”.format(12345.6789) 回车后显示的结果为: [单选…...
Termux可用中间人网络测试工具Xerosploit
Termux可用中间人网络测试工具Xerosploit。 Xerosploit 是一款基于 MITM 的本地网络渗透测试工具包。 食用方法: git clone https://github.com/LionSec/xerosploit cd xerosploit sudo python3 install.py 运行: sudo xerosploit 使用备注࿱…...