WPF学习记录2_XAML

1、XAML定义

XAML是一种相对简单、通用的声明式编程语言,适用于构建和初始化.net对象,它仅仅是使用.net API的方式,.netframework3.0包含了XAML编译器和运行时解析器

查看XAML工具(windows sdk 自带XamlPad,开源工具kaxaml )

2、元素和特性

XAML规范定义了一些规则,用于把.net命名空间、类型、属性、事件映射为XML命名空间、元素、特性。

举例说明:

XAML: <Button xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Content="OK"/>

XAML中定义的一个XML元素与.Net中实例化一个对应的对象是等价的

System.Windows.Controls.Button b=new System.Windows.Controls.Button();

b.Content="OK"

3、命名空间

不知道大家注意上述Button对象中xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"没有,实际上这个不是网址,这串字符是被映射到System.Windows.Controls上的,这个映射关系是WPF程序集中硬编码完成的。


4、属性元素

富创作是WPF亮点之一,按钮内容不仅仅只限于文本,可以把任意内容放在里面,例如:将Button 中的属性Content采用矩形填充,

<Button.Content>

 <Rectangle Height=“40” Width=“40” Fill="black"/>

</Button.Content>

上述代码制定Button的内容为一个黑色40*40的正方形。

5、类型转换器

举例说明:设置按钮背景色:

<Button.Background>

white

</Button.Background>

那么问题来了,white是怎么对应System.Windows.Media.Brushes.White这个类型的,实际上XAML解析器会寻找类型转换器,WPF提供了很多类型转换器,Brush、Color、Font Weight、Point等,它们都是派生TypeConverter,你可以从TypeConverter派生自己的类型转换器

6、标记扩展

标记扩展目的是扩展XAML的表达能力,WPF内建的标记扩展都派生自MarkupExtention,使用{}括号来表明该属性是标记扩展



上述标记扩展没有搞的太明白,如果有朋友能够清晰说明,可以到下面评论区进行解释

7、对象元素的子元素

WPF中对象元素可以包含子元素,其中包含两种类型:内容属性和集合项;

内容属性就如Button中Content属性,任何内容都可以放。

集合项: ComboBox 、 ListBox 和 TabControl


8、编译:将XAML与过程式代码混合使用

WPF允许用任何一种.NET语言完全以过程式代码编写应用程序。

1、加载XAML,FileStream读取XAML文件,然后使用XamlReader来加载Stream,如果有大文件时,采用LoadAsync异步加载,保持界面响应, 主要针对动态皮肤

2、编译XAML,可以查看示例程序

3、XAML关键字列表


源码下载


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值