WPF(WindowsPresentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。

WPF 为WindowsPresentation Foundation的首字母缩写,中文译为“Windows呈现基础”,其原来代号为“Avalon”,因与“我佩服”拼音首字母组合一样,国内有人调侃地称之为“我佩服”。由 .NET Framework 3.0 开始引入,与 WindowsCommunication Foundation及 WindowsWorkflow Foundation并行为新一代 Windows操作系统以及 WinFX 的三个重大应用程序开发类库。

——转载自百度百科

XAML语言:是微软公司为构建应用程序用户界面而创建的一种新的“可扩展应用程序标记语言”,提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面。 特点:

定义应用程序的界面元素

显示的声明WPF资源(样式、模板、动画等)

可扩展性(自定义UI控件)

集中关注于界面的设计和实现

XAML命名空间

开发语言会将常用功能以类的形式封装,开发人员根据自己的业务需求,也会封装满足自身业务需求的类,如果有序组织这些类?一方面,便于开发人员准确调用;另一方 面,编译器可以有效识别具有相同命名的类,就引入了命名空间,简单的说,是通过类 似树状结构来组织各种类,是一种较为有效的类名排列方式。

而XAML和.NET其他语言一样,也是通过命名空间有效组织起XAML内部的相关元素类,这里的命名空间与.NET中的命名空间不是一一对应的,而是一对多,一眼望去,都是“网 址”,这里的网址,是遵循XAML解析器标准的命名规则,而不是真正的网址(在IE中根 本打不开)。

                                                                                

XAML三个顶级元素:

Window、UserControl(用户控件,布局的时候像窗体那样布局就可以 了)、Page把窗体以网页形式展现。而一个XAML页面里只能有一个顶级元素。而顶级元素里面只能有一个子元素。因此要有布局控件

WPF控件分类

布局控件:是可以容纳多个控件或者嵌套其他布局的控件,用于在UI上组织和 排列控件。Grid、StackPanel、DockPanel等控件都属此类,它们拥有共同的父类为Panel。

内容控件:只能容纳一个控件或者布局控件作为他的内容。Window、Button等 控件属于此类,因为只能容纳一个控件作为其内容,所以经常借助布局控件来规划其内容。它们的共同父类是ContentControl。

带标题内容控件:相当于一个内容控件,但是可以加一个标题(Header),标 题部分亦可容纳一个控件或者布局,GroupBox、TabItem等是这类控件的典型代表。它们的共同父类是HeaderedContentControl。

条目控件:可以显示一列数据,一般情况下这列数据的类型是相同的。此类控 件包括ListBox、ComboBox等。它们额共同基类是ItemsControl。此类控件在 显示集合类型数据方面功能比较强大。

带标题条目控件:相当于一个条目控件加上一个标题显示区。TreeViewItem、 MenuItem都属于此类控件。这类控件往往用于显示层级关系数据,结点显示在 其Header区域,子级结点则显示在其条目控件区域。此类控件的共同基类是HeaderdeItemsControl。

特殊内容控件:比如TextBox容纳的是字符串、TextBlock可以容纳可自由控制格 式的文本、Image容纳图片类型数据等。这类控件相对比较独立,但也比较常用。

可以把控件想象成一个容器,容器里装的东西就是它的内容。控件的内容可以直接 是数据,也可以是控件。当控件的内容还是控件的时候就形成了控件的嵌套。我们把被 嵌套的控件称为子级控件,这种控件嵌套在UI布局时尤为常见。因为允许控件嵌套,所 以WPF的UI会形成一个树形结构。如果不考虑控件内部的组成结构,只观察由控件组成的“树”,那么这棵树为逻辑树(LoicalTree);WPF控件往往是由更基本的控件构成的,即控件本身就是一颗树,如果连控件本身的树也考虑在内,则这棵比逻辑树更“繁茂”的树称 为可视元素树(Visual Tree)。

 控件是内存中的对象,控件的内容也是内存中的对象。控件通过自己的某个属性引 用着作为其内容的对象,这个属性称为内容属性(Content Property)。“内容属性”是个 统称,具体到每种控件上,内容属性都有自己确切的名字——有的直接就叫Content,有的 叫Child;有些控件的内容可以是集合,其内容属性有叫Items或Children的。