C#WPF的XAML的语法详谈和特性
WPF的XAML(eXtensible Application Markup Language)是一种基于XML的标记语言,用于在.NET框架中定义和描述用户界面。XAML提供了一种声明性的方式来构建应用程序的UI元素,包括窗口、控件、布局、样式、动画和数据绑定等。
XAML的对象元素:
对象元素通常声明类型的实例。 该类型在将 XAML 用作语言的技术所引用的程序集中定义
格式<创建实例的类型名></创建实例的类型名>或者<创建实例的类型名 />
对象元素指的是用来定义和初始化对象的XML标签。这些元素可以是控件、布局容器、数据绑定对象等。
<Window x:Class="xaml训练.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:xaml训练"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><StackPanel><Button Content="Button 1"></Button><Button Content="Button 2" /></StackPanel></Grid>
</Window>
一些常用的XAML的对象元素:
-
控件对象:
<Button Content="Click Me" /> -
布局容器:
<StackPanel><Button Content="Button 1" /><Button Content="Button 2" /> </StackPanel> -
数据绑定对象:
<TextBlock Text="{Binding Path=Name}" /> -
属性设置:
<Button Content="Click Me" Width="100" Height="30" /> -
事件处理:
<Button Content="Click Me" Click="OnButtonClick" /> -
资源定义:
<Window.Resources><SolidColorBrush x:Key="MyBrush" Color="Red" /> </Window.Resources> -
样式定义:
<Window.Resources><Style TargetType="Button"><Setter Property="Background" Value="Blue" /></Style> </Window.Resources> -
自定义控件:
<local:MyCustomControl />
XAML的特性语法(属性)
-
设置属性值:
<Button Content="Click Me" Width="100" Height="30" /> -
绑定属性到数据源:
<TextBox Text="{Binding Path=UserName}" /> -
设置资源引用:
<Button Content="Click Me" Background="{StaticResource MyBrush}" /> -
使用类型转换器:
<Label Content="{Binding Path=Age, Converter={StaticResource IntegerToStringConverter}}" /> -
设置事件处理器:
<Button Content="Click Me" Click="OnButtonClick" /> -
使用附加属性:
<TextBox TextOptions.TextFormattingMode="Display" /> -
设置样式和模板:
<Button Content="Click Me" Style="{StaticResource MyButtonStyle}" /> -
使用命令:
<Button Content="Click Me" Command="{Binding Path=MyCommand}" CommandParameter="Parameter" /> -
设置动画:
<Button Content="Click Me"><Button.Triggers><EventTrigger RoutedEvent="Button.Click"><BeginStoryboard><Storyboard><DoubleAnimation Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:1" /></Storyboard></BeginStoryboard></EventTrigger></Button.Triggers> </Button> -
使用数据模板:
<ListBox ItemsSource="{Binding Path=Items}"><ListBox.ItemTemplate><DataTemplate><TextBlock Text="{Binding Path=Name}" /></DataTemplate></ListBox.ItemTemplate> </ListBox>
XAML的语法细节:
a. 标签的本质是一个类(对象)。
b. 标签:双标签(非空标签,闭合标签)、单标签(空标签)。
c. XAML中俗称的标签,官方称对象元素。
d. 属性只出现在开始标签中。俗称的属性官方称特性语法。
e. 内容区:指开始标签和结束标签之间的信息。不仅仅只包含文本,也可能包含子标签。
f. 标签的内容区本质上也是属性。
g. XAML 区分大小写。属性之间的空白不可少。空白也有利于XAML代码格式化。
h. 命名空间及前缀,自定义前缀。
i. 事件,路由事件及代码隐藏(CodeBehind代码在后面)。事件本质上也是一种属性。路由:本质上就是一个路径,指明到某个地方的一个路径。
j. 命名元素及附加属性。命名元素就是给标签启个名字,名字不建议(不能)重复。附加属性就是标签本来没有的属性,由于和其他标签结合起来使用时,其他标签附加到此标签的属性。
k. 标记扩展(重点,难点),绑定语法,将来再讲MVVM框架时再谈。
XAML的一些关键特性:
1.声明性语法:XAML使用XML标记来声明UI元素,这使得界面设计和布局可以独立于代码逻辑。
2.控件和属性:XAML允许你定义各种控件(如按钮、文本框等)及其属性(如宽度、高度、颜色等)。
3.数据绑定:XAML支持数据绑定,可以将UI元素与数据源绑定,实现数据的自动更新和交互。
4.资源和样式:XAML允许定义资源(如颜色、样式等)和样式,以实现UI元素的一致性和可重用性。
5.事件绑定:XAML支持将事件处理器绑定到UI元素的事件上,例如将按钮的点击事件绑定到一个方法。
6.模板:XAML可以定义控件模板,自定义控件的外观和行为。
7.布局:XAML提供了多种布局控件,如Grid、StackPanel、WrapPanel等,用于组织和排列UI元素。
8.动画和交互:XAML支持定义动画和交互效果,增强用户体验。
9.可扩展性:XAML是可扩展的,可以定义自定义控件和类型。
10.分离关注点:XAML允许UI设计和逻辑代码分离,提高开发效率和可维护性。
一个简单的XAML示例,定义了一个包含按钮的窗口:
<Window x:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow" Height="350" Width="525"><Grid><Button Content="Click Me" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10"/></Grid>
</Window>
Window元素定义了一个窗口,Grid元素作为布局控件,Button元素定义了一个按钮。x:Class属性将XAML文件与后台代码(Code-behind)关联起来。
XAML的设计哲学是将界面设计和逻辑代码分离,使得设计师可以专注于界面设计,而开发者可以专注于逻辑实现。这种分离也有助于提高应用程序的可维护性和可测试性。
相关文章:
C#WPF的XAML的语法详谈和特性
WPF的XAML(eXtensible Application Markup Language)是一种基于XML的标记语言,用于在.NET框架中定义和描述用户界面。XAML提供了一种声明性的方式来构建应用程序的UI元素,包括窗口、控件、布局、样式、动画和数据绑定等。 XAML的…...
一篇文章讲透数据结构之二叉搜索树
前言 在前面的学习过程中,我们已经学习了二叉树的相关知识。在这里我们再使用C来实现一些比较难的数据结构。 这篇文章用来实现二叉搜索树。 一.二叉搜索树 1.1二叉搜索树的定义 二叉搜索树(Binary Search Tree)是基于二叉树的一种升级版…...
新手入门c++(8)
到时候了,是时候给你们讲一下其他的定义形式与格式化输入输出了。 1.长整型变量 长整型变量分为两种: ①long类型 在计算机编程中,long 类型是一个整型数据类型,用于存储较大的整数。它的大小和范围取决于操作系统和编译器的实…...
新手铲屎官提问,有哪几款噪音低的宠物空气净化器推荐
相信很多铲屎官都明白的的痛就是猫咪掉毛太严重,所以每次看到满天飞的浮毛时只想赶紧逃离,一点都不想清理。但是家是自己的,猫是自己的,健康也是自己的,不清理也得清理。 为了更有效的清理浮毛,我朋友特意…...
解决RabbitMQ脑裂问题
文章目录 前言一、现象二、解决办法 前言 RabbitMQ脑裂 一、现象 RabbitMQ镜像群出现脑裂现象,各个节点的MQ实例都“各自为政”,数据并不同步。 二、解决办法 # 停止mq sh rabbitmq-server stop_app # 查看mq进程是否存在 ps -ef | grep rabbitmq # …...
经纬恒润AUTOSAR成功适配芯钛科技Alioth TTA8车规级芯片
在汽车电子领域,功能安全扮演着守护者的角色,它确保了车辆在复杂多变的情况下保持稳定可靠的运行。随着汽车电子的复杂性增加,市场对产品功能安全的要求也日益提高。基于此背景,经纬恒润AUTOSAR基础软件产品INTEWORK-EAS-CP成功适…...
4、java random随机数、一维数组、二维数组
目录 Random类与随机数生成数组的概述与使用数组的内存分配与访问数组的常见问题与解决方案一维数组的遍历与操作二维数组的概述与遍历1. Random类与随机数生成 引言 在编程中,我们经常需要生成随机数,比如在游戏、模拟实验或者数据处理中。Java提供了一个非常方便的类Rand…...
C++ 魔法三钥:解锁高效编程的封装、继承与多态
快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 目录 💯前言 💯封装 1.封装概念 2.封装格式 3.封装的原理 4.封装的作用 💯继承 1.继承的概念 2.继承格式 3.继承的…...
姿态传感器(学习笔记上)
上节我们学的是温湿传感器,这节我们学的是姿态传感器,虽然都是传感器,但是它们还是有很大的区别的,这节的传感器我们通过学习可知,开发板上的姿态传感器型号是QMI8658C,内部集成3轴加速度传感器和3轴陀螺仪…...
labelimg使用教程
快捷键 W:调出标注的十字架,开始标注 A:切换到上一张图片 D:切换到下一张图片 del:删除标注的矩形框 CtrlS:保存标注好的标签 Ctrl鼠标滚轮:按住Ctrl,然后滚动鼠标滚轮,…...
力扣21 : 合并两个有序链表
链表style 描述: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 节点大小相同时,l1的节点在前 何解? 1,遍历两个链表,挨个比较节点大小 同时遍…...
【Spring】Spring Boot 配置文件(7)
本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点,根据序号学习即可。 有什么不懂的都可以问我,看到消息会回复的,可能会不及时,请见谅!! 1、配置文件作…...
《向量数据库指南》——解锁Wikipedia文章向量的跨语言搜索秘籍
嘿,各位向量数据库和AI应用的小伙伴们,我是你们的老朋友王帅旭,大禹智库的向量数据库高级研究员,也是《向量数据库指南》的作者。今天,咱们来聊聊一个超棒的数据集——百万条 Wikipedia 文章向量,这可是我在研究过程中发现的一个宝藏啊! 首先,咱们得说说这个数据集的来…...
【力扣 + 牛客 | SQL题 | 每日5题】牛客SQL热题204,201,215
1. 力扣1126:查询活跃业务 1.1 题目: 事件表:Events ------------------------ | Column Name | Type | ------------------------ | business_id | int | | event_type | varchar | | occurrences | int | --------…...
下载数据集用于图像分类并自动分为训练集和测试集方法
一、背景 最近需要用Vision Transformer(ViT)完成图像分类任务,因此查到了WZMIAOMIAO的GitHub,里面有各种图像处理的方法。而图像处理的前期工作就是获取大量的数据集,用于训练模型参数,以准确识别或分类我…...
Python xlrd库介绍
一、简介 xlrd是一个用于读取Excel文件(.xls和.xlsx格式)的Python库。它提供了一系列函数来访问Excel文件中的数据,如读取工作表、单元格的值等。 二、安装 可以使用以下命令安装xlrd库: pip install xlrd 三、使用方法 1. 导入库: 示例…...
Javascript立即执行函数
//立即执行函数 把函数的声明看作一个整体声明结束就立即调用 // (function(){console.log(hello) // })(); console.log((function (){ return 0; })()); // let afunction(){ console.log(hello) }; console.log(typeof a);//function,数组:objeck...
Linux相关概念和易错知识点(17)(文件、文件的系统调用接口、C语言标准流)
目录 1.文件 (1)文件组成和访问 (2)文件的管理 (3)C语言标准流 (4)struct file ①文件操作表 ②文件内核缓冲区 (5)Linux下一切皆文件 (…...
三防加固工业平板国产化的现状与展望
在当今全球科技竞争日益激烈的背景下,工业4.0和智能制造的浪潮推动了工业自动化设备的迅速发展,其中,三防加固工业平板电脑作为连接物理世界与数字世界的桥梁,其重要性不言而喻。所谓“三防”,即防水、防尘、防震&…...
3.1.3 看对于“肮脏”页面的处理
3.1.3 看对于“肮脏”页面的处理 文章目录 3.1.3 看对于“肮脏”页面的处理再看对于“肮脏”页面的处理MmPageOutVirtualMemory() 再看对于“肮脏”页面的处理 MmPageOutVirtualMemory() NTSTATUS NTAPI MmPageOutVirtualMemory(PMADDRESS_SPACE AddressSpace,PMEMORY_AREA Me…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
Django RBAC项目后端实战 - 03 DRF权限控制实现
项目背景 在上一篇文章中,我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统,为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...
