XAML的几个关键概念

设计UI的语言——XAML XAML是什么 对于以往桌面程序开发来说,需求分析结束后,UI设计师完成效果图,再由程序员通过编程实现,两者是“串行”的关系,但是再优秀的团队也会在沟通和整合上消耗巨大精力,比如设计师的设计跟不上逻辑的变化、程序员未能完全实现设计的UI效果图等。如果UI设计师能与程序员“并行”工作的话,那么上面提到的问题就得以解决。因此,微软创造了一种新的开发语言——XAML,这种语言借鉴了网络开发模式,即设计师使用HTML、CSS、JavaScript直接生成UI,程序员则在UI产生的同时实现背后的功能逻辑。XAML全称 阅读详情
Property Elements

使用单独的XML节点来表示WPF对象的属性值,这样就可以表示比较复杂的对象。

比如

<Button Background="Yellow" />

使用Property Elements就可以这样表示

<Button>
      <Button.Background>Yellow</Button.Background>
</Button>

对简单对象似乎更复杂了,但是如果要表示更复杂一点的对象,比如

<Button>
   <Button.Background>
      <SolidColorBrush>
        <SolidColorBrush.Color>
            <Color A=”255” R=”255” G=”255” B=”255”/>
        </SolidColorBrush.Color>
   </Button.Background>
</Button>

这时候,如果没有Property Elements就很难表示了。


Type Converters

为什么前面的Background既可以用"Yellow"这样简单的字符串赋值,也可以用SolidColorBrush这样的复杂对象赋值呢?是不是WPF引擎做了很多的特殊处理?

其实是WPF内部提供了很多的类型转换类(Type Converter),可以把字符串转换成特定的数据类型,比如前面Background就是Brush类型。这样,就可以把常用对象用字符常量进行定义,方便使用.这种做法具有可扩展性,不需要硬编码。

Markup Extensions

就像PHP和ASP等语言一样,为了实现HTML和代码的混合编写,需要在使用特殊的代码标记,比如“<%%>”。同样,在XAML里,使用的是“{}”。在花括号里的,就是.NET类对象,只是用法比较单一,就是简单的函数调用的样子,而没有流程控制,看起来不那么像常见的代码。比如

Content="{Binding Path=Height, RelativeSource={RelativeSource Self}}"

在XAML里,Markup Extensions主要用于对象的引用和数据绑定。

可以设想一下,如果没有Markup Extensions,纯粹使用XML来表示以上功能也是可以的。比如

<Button.Content>
      <Binding Path="Height">
            <Binding.RelativeSource>
                   <RelativeSource>
        Self
...

可以看到,使用XML来表示的话,非常冗余。所以,我想Markup Extensions的使用,就是为了简洁。如果把XML换成JSON的话,也许就可以不用Markup Extensions了。






































c# xaml语言教程,c#学习之30分钟学会XAML 1.狂妄的WPF相对传统的Windows图形编程,需要做很多复杂的工作,引用许多不同的API。例如:WinForm(带控件表单)、GDI+(2D图形)、DirectX API(3D图形)以及流媒体和流文档等,都需要不同的API来构建应用程序。WPF就是看着上面的操作复杂和不爽,自己决定做老大,想用DirectX技术涵盖一切,于是想要将上述的东西全部融合到自身,减少复杂度,让编程变得爽起来的技术。而... 阅读详情

相关推荐

c# xaml语言教程,Xamarin XAML语言教程XAML文件结构与解析XAML

Xamarin XAML语言教程XAML文件结构与解析XAMLXAML文件结构在上文中,我们创建XAML文件后,会看到类似图1.16所示的结构图1.16结构其中,.xaml文件和.xaml.cs文件就是XAML文件的结构。以下就是对这两个文件的介绍。.xaml文件中包含的就是XAML代码,实际上就是XML语法。官方的说法:它是一个声明对象的语言,为我们创建对象提供便捷的一种方式。与HTML类似...

weixin_42510060的博客 2889

XAML实例教程系列 - 类型转换器(Type Converter)

在XAML中每一个对象元素映射一个实例,而实例属性可以通过特性(Attributes)进行赋值。在实际项目开发中,对象元素的属性值可以是不同数据类型,根据需求不同,经常需要对数据类型进行转换,就需要使用XAML的类型转换器(Type Converters)。本篇将讲解XAML类型转换器的使用。 XAML类型转换器基础 在Windows 8或者Silverlight应用开发中,经常会用到...

fuerbosi 238

通过 PythonNet 使用 XAML 混合编程

(欢迎光临我的独立博客) 在昨天的文章里,我介绍了如何利用 PythonNet 来从 Python 中调用 WPF 类库。这只是第一步。接下来将面临的挑战是,如何有效的应付复杂多变的 UI 设计呢?XAML 语言是用来解决这个问题的,它将界面设计与编程逻辑分割开来。但是 X

3179

深入浅出WPF之我见4

XAML编译器会为每个标签创建一个与之对应的对象,对象创建出来之后要对它的属性进行必要的初始化之后才有使用意义。XAML除了使用标签声明对象就是初始化对象的属性了。

ZHANGPENGYE007的博客 447

XAML 概述

本本介绍 XAML 语言的功能,并演示如何使用 XAML 编写 Windows Presentation Foundation (WPF) 应用。 本主题专门介绍 WPF 实现的 XAML。 XAML 本身是一个比 WPF 更大的语言概念。XAML 是一种声明性标记语言。 应用于 .NET Core 编程模型时,XAML 简化了为 .NET Core 应用创建 UI 的过程。 你可以在声明性 XAML 标记中创建可见的 UI 元素,然后使用代码隐藏文件(这些文件通过分部类定义与标记相联接)将 UI 定义与运

qq_30725967的博客 3679

如何查看在电脑里登陆过的微信帐号的聊天记录

打开微信电脑版,点击左下角 "≡" 菜单 → 选择 "设置"进入 "账号与存储"(旧版为" 文件管理 ")选项卡在 "存储位置"一栏查看当前实际保存路径,可点击" 打开文件夹 " 直接访问查看电脑里登录过的微信账号聊天记录,首选官方客户端直接登录查看,操作简单且安全;若账号已退出,可通过备份恢复功能处理;仅需查看媒体文件时,可定位到FileStorage 文件夹直接访问。无论哪种方式,都需遵守隐私保护原则,并注意聊天记录的加密特性限制。

捷利迅分享的博客 4514

WPF中的XAML详解

例如,Foreground属性使用的是Brush对象,那XAML解析就会去检查Brush类是否使用TypeConverter特性修饰。这样是Window类所具备的属性,设置不同的属性,窗口也会发生相应的改变。一般我们在WPF中添加窗口时,可以到一个xxx.xaml会带一个xxx.xaml.cs,这个xxx.xaml.cs就是后台代码类,用于处理事件。每个控件都拥有自己内部定义的属性。WPF内置控件有一个Button类,当我们引用了某个三方组件中,也有一个Button类,那这个时候,XAML是如何区分的呢?

【微软MVP】zhaotianff的专栏 3318

基于ROS下的安卓手机图像和IMU跑ORB-SLAM3

接之前文章继续,手上没有现成的单目+IMU硬件,但是安卓手机几乎人人都有。因此,本文讲下如何用手机跑ORB-SLAM3的Mono和Mono_Inertial。 1. 手机与PC通信 基于ROS下的信息发布和订阅,手机和PC在一个局域网下进行信息(image和IMU)传输。 手机APK参考了github上的2个开源Android_Camera-IMU和android_ros_sensors,基于ros_java生成安卓APP,下载安装任一个APP到安卓手机,界面分别是这样: 手机和PC连一个无

h_372101的博客 1万+

c#代码到XAML的转换

c#代码到XAML的转换

每一天都有新的希望 4078

Python实现微信PC端聊天记录自动化监听与智能回复

本文详细介绍了如何使用Python实现微信PC端聊天记录的自动化监听与智能回复。通过win32api和uiautomation库,模拟人工操作,实时监控聊天窗口并抓取新消息。文章重点讲解了核心代码逻辑、环境搭建步骤,并提供了实现关键词触发自动回复的完整方案,旨在提高工作效率与信息管理自动化水平。

weixin_29092031的博客 345

dreamerv3复现教程

由于dreamerv3存在很多版本冲突问题,所以很难直接使用和复现。

无人机飞啊飞啊飞 2831

标记扩展和 WPF XAML

本主题介绍 XAML 的标记扩展概念,包括其语法规则、用途以及底层的类对象模型。标记扩展是 XAML 语言以及 XAML 服务的 .NET 实现的常规功能。本主题专门详细论述了用于 WPF XAML 的标记扩展。 本主题包括下列各节。 XAML 处理器和标记扩展 基本标记扩展语法 XAML 定义的标记扩展 特定于 WPF 的标记扩展 *Extensi...

weixin_30398227的博客 106

从BUCK-BOOST到反激:一个‘拆电感’的视角,轻松理解多路输出交叉调整

本文从BUCK-BOOST电路到反激变换器的演变入手,通过‘拆解电感’的独特视角解析多路输出交叉调整机制。深入探讨了反激电路的能量暂存方式、传递路径变化及电压关系,并结合具体参数对比揭示其特性。针对多路输出中的电压平衡问题,提供了绕组排布优化、元器件选型等实战技巧,帮助工程师有效提升电源系统的稳定性与效率。

weixin_33738578的博客 436

XAML关键字

XAML语言命名空间中的关键字,采用习惯性的x作为命名空间的前缀 关 键 字 何处有效 含义/描述 x:Class 根元素的特性 为根元素定义一个派生自元素类型的类,可以在前面加上.NET命名空间作为前缀(可选) x:ClassModifier 根元素的特性,必须与x:Class一起使用 定义由x:Class指定的类的可见性(该类默认是可见的)。该特性值必

sheila_1988的博客 1350

ss524v100 调试cvbs输出

启用视频层3 dev2 对应 layer3在vdec与vo绑定的时候(不需要经过vpss),不能绑定错误,以下是绑定的程序。

2116

泛微OA集成阿里云短信(E9保姆教程)

泛微OA集成阿里云短信(E9保姆教程)

技术分享 515

CH02_XAML

XAML

赋能智能制造,驱动人才未来! 2258

【S32K3 MCAL配置】-3.4-CANFD配置-接收特定的“经典CAN/CANFD标准帧”和“经典CAN/CANFD扩展帧”(基于MCAL+FreeRTOS)

【S32K3 MCAL配置】-3.4-CANFD配置-接收特定的“经典CAN/CANFD标准帧”和“经典CAN/CANFD扩展帧”(基于MCAL+FreeRTOS)

「汽车电子助手」的博客 695

WPF xaml 文件详解

创建好了项目后,最重要的是对 App和MainWindow的理解,在一开始的时候,极容易就直接在MainWindow添加控件,开始创作,甚至会忽略App.xaml 的存在,但是,弄清楚他们之间的关系和区别,对于理解WPF项目是有极大帮助且至关重要的。在 WPF 项目中,App.xaml和以及和是非常重要的,它们共同定义了应用程序的和的行为。简单来说,整个项目全局的东西,和应用程序相关的,都涉及到App,而MainWindow甚至可以仅仅理解为一个程序上的UI控件而已;(注:一些后台服务的原理就是基于此)

qq_38960013的博客 1540

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

XAML 命名空间 关键字

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  使用System。Window是。Control是等众多VLR名字空间为默认名字空间 xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" 该附加名字空间提供言语上的支持...

joking0ne的专栏 192

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

WPF XAML

显然,由XAML解析器生成的LedgerView类在声明时也使用了partial关键字,这样由XAML解析成的类和C#文件里定义的部分就合二为一了。正是由于这种partial机制,我们可以把类的逻辑代码留在.cs文件里,用C#语言来实现,而把那些与声明及布局UI元素相关的代码分离出去,实现UI与逻辑分离。并且,用于绘制UI的代码(如声明控件类型的字段、设置它们的外观和布局等)也不必再使用C#语言,使用XAML和XAML编辑工具就能轻松搞定。这些全是window标签的attribute。

lsw2604190117的博客 1214

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

XAML 概述二

通过上一节我们已经对XAML有了一定的了解,这一节我们来系统的学习一下XAML。 一. 简单属性与类型转换器,属性元素: 我们已经知道 XAML是一种声明性的语言,并且XAML解析器会为每个标签创建一个与之对应的对象。光有对象是没有任何意义的,需要对属性之类的赋值才有使用意义。所以就要求XAML为对象属性赋值。XAML中为对象属性赋值共有2种语法: · 使用字符串进行简单赋...

b6600035的博客 362

XAML

XAML定义   XAML是一种相对简单、通用的声明式编程语言,它适合于构建和初始化.NET对象。   XAML仅仅是一种使用.NET API的方式,把它与HTML、可伸缩向量图形(SVG)或其他特定领域的格式或语言作比较是完全错误的。XAML由一些规则(告诉解析器和编译器如何处 理XML)和一些关键字组成,但它自己没有任何有意义的元素。因此,如果在没有WPF这样的框架的基础上讨...

anshi5303的博客 183

XAML动画

关于动画大家并不陌生,但对于代码XAML动画来讲可能就陌生了,今天就来给大家讲一下什么是XAML动画。 关于动画实际上有两种类型: 第一种:是在开始值和结束值之间以逐步增加的方式改变属性 的动画(线性插值过程) 第二种:是从一个值突然变成另一值的动画(关键帧动画)。所有关键帧动画都使用“类型名 + AnimationUsingKeyFrames” 的形式进行命名,比如StringAnimat...

weixin_44547418的博客 660

WPF 之 XAML、WPF核心程序集、App.xaml

一、在XAML中引用命名空间 1、添加对程序集的引用, 2、在根元素的起始标签中写上一句:xmlns:c="clr-namespace:System.Windows.Controls;assembly=PresentationFramework"。                                 xmlns:c="clr-namespace:命名空间;assembly=程

Java_c# 1833
上一篇: 《Windows Presentation Foundation Unleashed》(书评)
下一篇: WPF的几个关键点
optman
博客等级 码龄26年 64粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值