WPF编程宝典 - 03布局
WPF布局
在WPF中非常抵制基于坐标的布局,而是注重创造更灵活的布局,使布局能够适应内容的变化、不同的语言以及各种窗口尺寸。
布局原则
不应显式设定元素(如控件)的尺寸。元素应当可以改变尺寸以适合它们的内容。可通过设置最大和最小尺寸来限制可以接受的控件尺寸范围
不应使用屏幕坐标指定元素的位置。元素应当由它们的容器根据它们的尺寸/顺序以及(可选的)其他特定于具体布局容器的信息进行排列。如果需要在元素之间添加空白空间。可使用Margin
布局容器的子元素“共享”可用的空间。如果空间允许,布局容器会根据每个元素的内容尽可能为元素设置更合理的尺寸。它们还会向一个或多个元素分配多余的空间
可嵌套的布局容器。布局容器之间可以进行嵌套组合
布局过程
WPF 布局包括两个阶段:测量(measure)阶段和排列(arrange)阶段。在测量阶段,容器遍历所有子元素,并询问子元素它们所期望的尺寸。在排列阶段,容器在合适的位置放置子元素。
布局容器
所有WPF布局容器都是派生自System.Windows.Controls.Panel抽象类的面板。
Panel类的层次结构
Panel类还包 ...
WPF编程宝典 - 02XAML
XAML
XAML对于WPF不是必需的,理解这一点很重要。Visual Studio当然可以使用Windows窗体方法,通过语句代码来构造WPF窗口。但如果这样的话,窗口将被限制在Visual Studio开发环境之内,只能由编程人员使用。
XAML名称空间
12xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:"x=http://schemas.microsoft.com/winfx/2006/xaml"
xmlns特性是XML中的一个特殊特性,他专门用来声明名称空间。这段标记声明了两个名称空间,在创建的所有WPF XAML
文档中都会使用这两个名称控件
http://schemas.microsoft.com/winfx/2006/xaml/presentation是WPF核心名称空间。它包含了所有WPF类,包括用来构建用户界面的控件。在该例中,该名称空间的声明没有使用名称空间前缀,所以它成为整个文档的默认名称空间。换句话说,除非另行指明,每个 ...
WPF编程宝典 - 01概述
WPF概述
WPF(Windows Presentation Foundation)是用于 Windows 的现代图形显示系统。与之前出现的其他技术相比,WPF发生了根本性变化,引入了“内置硬件加速”和“分辨率无关”等创新功能;本章将介绍这两项功能。
WPF应用特点
硬件加速 。通过DirectX执行所有WPF绘图操作,以便充分利用现代显卡的最新功能
分辨率无关。WPF能够根据系统DPI设置,很长灵活地方大和缩小显示的内容,以使其适合所用的显示器和显示选择
控件无固定外观。可自由定制外观
声明式用户界面。通过XAML不必编写代码即可创建窗口
基于对象的绘图。即使准备在更低级的可视化层(而非高级元素层)上工作,也不需要使用绘图和像素进行工作,而是创建图形对象并让 WPF 尽可能最优化地显示出来。
WPF体系结构
WPF 使用多层体系结构。在顶层,应用程序与完全由托管C#代码编写的一组高层服务进行交瓦。至于将.NET 对象转换为Direct3D纹理和三角形的实际工作,是在后台由一个名为milcore.dll 的低级非托管组件完成的。milcore.dll 是使用非托管代码实现的 ...