XAML的简单说明
XAML是用于实例化.NET对象的标记语言,主要用于构建WPF的用户界面
XAML中的每一个元素都映射为.NET类的一个实例,例如<Button>映射为WPF的Button对象
XAML可以在一个元素中嵌套另一个元素,例如Grid元素可以嵌套Button元素
 

了解XAML

VisualStudio创建一个窗口,默认情况下产生的代码如下:
这段代码中包含两个标记元素,一个是Window,一个是Grid
Window是WPF顶级元素的一种,还有另外两种顶级元素Page和Application
Window
用于描述一个窗口
Page
和Window类似,但它用于可导航的应用程序
Application
用于定义应用程序资源和启动设置
任何一个XAML文档只能拥有一个顶级元素

属性

窗口标签中Title、Height、Width都是窗口的属性
在XAML文件中属性的值的类型总是字符串,
但XAML的解析器可以把这些字符串转换成.NET的任意类型
 

名称空间

在上面代码中,用xmlns属性来标记此文档从属于哪个名称空间
为什么需要名称空间呢?
如果我们在第三方组件中定义了Window类,如果没有一个名称空间做限定的话,
编译器不知道我们将使用哪个Window类型来渲染窗口
我们在上面的代码中,看到了两个名称空间,一个是WPF核心名称空间、一个是XAML名称空间
WPF核心名称空间
包含所有WPF类,包含用来构建用户界面的控件,是文档的默认名称空间
XAML名称空间
包含各种XAML实用特性,这些特性可以影响文档的解释方式,该名称空间被映射为前缀x,使用前需要标注前缀x,比如:<x:ElementName>
有了名称空间的限定,我们直接书写的<Grid>标签,才可以映射到System.Windows.Controls.Grid类上

代码隐藏类

XAML创建用户界面,但交互规则还是需要.NET语言编写
x:Class属性标记着与该XAML文件相配合的.NET类
注意这个类是一个“部分类”
这个部分类的构造函数中调用了InitializeComponent方法,
这个方法负责创建控件对象、设置属性、绑定事件、构造用户界面等工作

复杂属性

有些属性的值不是一个简单类型,而是一个对象,不如下面这个Grid的背景颜色
我们现在只要知道XAML解析器也能创建出复杂属性对应的值即可

标记扩展

如果我们希望把属性值绑定为一个已经存在的对象,那么我们可以使用静态标记扩展
标记扩展还有很多其他的用法,我们以后再聊
这里也涉及到了属性绑定,我们以后再聊

附加属性

对于嵌套的元素,子元素可以使用父元素定义的一些属性,这类属性就是附加属性
在WPF中附加属性多用于布局
修改记录
2015-1-5:完成全部内容
参考资料
《Pro WPF 4.5 in C# 4th Edition》

备注

本篇只简单介绍了XAML的常见知识,还有一些不常见的知识、高级主题暂时没有涉及
 
 

学习WPF——了解WPF中的XAML的更多相关文章

  1. 捕捉WPF应用程序中XAML代码解析异常

    原文:捕捉WPF应用程序中XAML代码解析异常 由于WPF应用程序中XAML代码在很多时候是运行时加载处理的.比如DynamicResource,但是在编译或者运行的过程中,编写的XAML代码很可能有 ...

  2. WPF学习之路(二) XAML(续)

    属性 简单属性 前面用到的Width/Height都是简单属性,其赋值一定要放到双引号里 XAML解析器会根据属性的类型执行隐式转换 与C#的区别 SolidBrush.Color = Colors. ...

  3. WPF学习之路(二) XAML

    在WPF中引入了XAML语言,主要用于界面设计,业务逻辑则使用C#实现后台代码,将界面设计与业务逻辑分离 XAML是一种声明式语言,类似XML\HTML 示例: <!--Start Tag--& ...

  4. WPF中 PropertyPath XAML 语法

    原文:WPF中 PropertyPath XAML 语法 PropertyPath 对象支持复杂的内联XAML语法用来设置各种各样的属性,这些属性把PropertyPath类型作为它们的值.这篇文章讨 ...

  5. 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)

    WPF中Style的使用 Styel在英文中解释为”样式“,在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外观更加美化同时减少了 ...

  6. wpf将表中数据显示到datagrid示例(转)

    原文:http://www.jb51.net/article/47120.htm 这篇文章主要介绍了wpf将表中数据显示到datagrid示例,需要的朋友可以参考下 a.在.xaml文件中拖入一个da ...

  7. 在WPF应用程序中使用Font Awesome图标

    Font Awesome 在网站开发中,经常用到.今天介绍如何在WPF应用程序中使用Font Awesome . 如果是自定义的图标字体,使用方法相同. 下载图标字体 在官方网站或github上下载资 ...

  8. WPF实现窗体中的悬浮按钮

    WPF实现窗体中的悬浮按钮,按钮可拖动,吸附停靠在窗体边缘. 控件XAML代码: <Button x:Class="SunCreate.Common.Controls.FloatBut ...

  9. WPF 和 UWP 中,不用设置 From 或 To,Storyboard 即拥有更灵活的动画控制

    无论是 WPF 还是 UWP 开发,如果用 Storyboard 和 Animation 做动画,我们多数时候都会设置 From 和 To 属性,用于从起始值动画到目标值.然而动画并不总是可以静态地指 ...

  10. WPF Prism MVVM 中 弹出新窗体. 放入用户控件

    原文:WPF Prism MVVM 中 弹出新窗体. 放入用户控件 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_37214567/artic ...

随机推荐

  1. sql按字段值进行统计

    用group by 如有个student表里有性别sex来统计 select sex,count(*) from student group by sex;

  2. arpg网页游戏之地图(二)

    [转]http://www.cnblogs.com/BlueWoods/p/4684557.html 这一节说说视窗,这个视窗,也就是游戏的视角.现在的网页游戏分为2D游戏,2.5D游戏和3D游戏,2 ...

  3. 升级 DNX 和 DNVM

    升级命令: dnvm upgrade -u dnvm upgrade -u –runtime CoreCLR -u 表示 unstable(不稳定),不带 -u 表示升级到最新稳定(stable)版本 ...

  4. jquery移动端日期插件

    不说多的,直接看代码<!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  5. Maven-3.2.2安装配置

    (1)安装JDK,这里是1.7.0_51 (2)Maven-3.2.2下载地址:http://mirrors.cnnic.cn/apache/maven/maven-3/3.2.2/binaries/ ...

  6. scala 学习: 逆变和协变

    scala 逆变和协变的概念网上有很多解释, 总结一句话就是 参数是逆变的或者不变的,返回值是协变的或者不变的. 但是为什么是这样的? 协变: 当s 是A的子类, 那么func(s) 是func(A) ...

  7. 更改appstore开发商名字

    个人账号,名字要改,google了半天也没找出解决方案,最后发邮件求助水果,发来解决办法. 您好: 感谢您参与 Apple 开发者计划.我是 Daniel , 非常荣幸能就更改 iTunes Conn ...

  8. PHP验证码参考页面

    http://blog.sina.com.cn/s/blog_95ee14340100z8q9.html http://www.jb51.net/article/44951.htm

  9. 集合框架之 List

    集合框架就是Java中解决数组长度固定的问题,相当于动态数组,随时用,随时建立,内存释放  这个问题还不知道? 整个集合框架 概括为   List  Set Map 这三个接口以及他们的实现类之间的应 ...

  10. C#动态执行字符串(动态创建代码)

    在编写C#程序的时候,有时我们需要动态生成一些代码并执行.然而C#不像JavaScript有一个Eval函数,可以动态的执行代码.所有这些功能都要我们自己去完成.如下是实例. 动态创建代码: usin ...