布局是 WPF 很重头的一部分内容,这一部分梳理和记录关于布局章节的知识点。

1. WPF 使用一种基于流(Flow-based)的概念来处理布局逻辑,将传统的基于“坐标”的思想尽力的舍弃掉,而是用相对和智能的方式,它使得开发人员可以创建与显示分辨率和窗口大小无关的、在不同显示设备上可以进行缩放调整的用户界面——这听起来很梦幻哈

2. WPF 窗口智能包含一个元素,WPF 推荐的方式是窗体上放一个容器,容器里放若干元素或容器。这一点通过创建默认的 WPF 程序可以看出,XAML 代码在 Window 标签内默认生成一个 Grid 元素,想在添加一个同级的元素,Window 标签处将会出现波折号报错“属性Content只能设置一次”

3. WPF 所有的容器类都是派生自 System.Windows.Controls.Panel,一些核心容器包括:

StackPanel(在一个水平或垂直堆栈中放置元素)

WrapPanel(在一系列可换行中放置元素,纵横均可)

DockPanel(根据容器整个边界调整元素)

Grid(根据一个不可见表格在行列中调整元素)

UniformGrid(相比 Gird,它要求所有单元格具有相同尺寸)

Canvas(使用固定坐标定位元素,接近传统 Windows,但不提供锚点和停靠,因此不适合但可用于可调整大小的窗体)

4. 装饰元素是一种特殊的元素,通常用于在一个对象周围添加某种装饰效果,所有的装饰元素继承于 System.Windows.Controls.Decorator

5. UserLayoutRounding=true 属性将确保 WPF 将所有布局容器的内容对齐到最近的像素边界,从而保证不会出现因反锯齿而导致的显示内容模糊。例如,一个共宽 200 像素的 Grid 被分为两列,每列 100 像素宽,但显示设备宽度为 175 像素,这将导致每列实际宽度 87.5 像素,如果不应用该属性,将看到一个模糊的边界为了适应 0.5 的像素对齐而出现。

6. 尽管 Grid 布局控件十分灵活,Grid 中的元素也可以跨行跨列的显示,但显然这种灵活性伴随着不确定性和逻辑的复杂,一种推荐的经验是:对于一次性布局,如一组功能按钮,使用 StackPanel 更合适,为窗口多个布局使用一种一致性的结构,Grid 当然更方便。

迟到的 WPF 学习 —— 布局的更多相关文章

  1. 迟到的 WPF 学习 —— 入门

    之所以说"迟到的",是因为我太晚才开始学习 WPF 了,之前 WPF 刚发布的时候有过粗浅了解,那时的 WPF 还非常简陋,VS 提供的内置控件十分匮乏,让我这样的非常依赖 Win ...

  2. 迟到的 WPF 学习 —— 依赖项属性

    本章学习依赖项属性,英文原文 Dependency Property,它是传统 .Net Framework 属性的扩展,是 WPF 的专属,但所幸使用起来和传统属性几乎一样.WPF 元素所提供的大多 ...

  3. 迟到的 WPF 学习 —— 路由事件

    1. 理解路由事件:WPF 通过事件路由(event routing)概念增强了传统的事件执行的能力和范围,允许源自某个元素的事件由另一个元素引发,例如,事件路由允许工具栏上的一个按钮点击的事件在被代 ...

  4. 迟到的 WPF 学习 —— 控件

    这一章书中内容比较多而杂,但每个对象的内容又相对简短,所以只挑选里边有代表性的内容做记录. 1. Label 控件:一个基础的简单的 ContentControl,Labe 支持快捷键文本的设置,可以 ...

  5. WPF编程学习——布局

    本文目录 1.布局简介 2.面板(Panel) 3.视图框(Viewbox) 4.滚动视图控件(ScrollViewer) 5.公共布局属性 1.布局简介 应用程序界面设计中,合理的元素布局至关重要, ...

  6. WPF学习(3)布局

    今天我们来说说WPF的布局.我们知道WinForm的布局主要是采用基于坐标的方式,当窗口内容发生变化时,里面的控件不会随之动态调整,这就造成了一个很不好的用户体验.而WPF为了避免这个缺点,采用了基于 ...

  7. WPF学习开发客户端软件-任务助手(下 2015年2月4日代码更新)

    时光如梭,距离第一次写的 WPF学习开发客户端软件-任务助手(已上传源码)  已有三个多月,期间我断断续续地对该项目做了优化.完善等等工作,现在重新向大家介绍一下,希望各位可以使用,本软件以实用性为主 ...

  8. WPF学习05:2D绘图 使用Transform进行控件变形

    在WPF学习04:2D绘图 使用Shape绘基本图形中,我们了解了如何绘制基本的图形. 这一次,我们进一步,研究如何将图形变形. 例子 一个三角形,经Transform形成组合图形: XAML代码: ...

  9. WPF学习之路初识

    WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...

随机推荐

  1. Repository模式

    Repository模式的两种写法与疑惑 现如今DDD越来越流行,园子里漫天都是介绍关于它的文章.说到DDD就不能不提Repository模式了,有的地方也叫它仓储模式. 很多时候我们对Reposit ...

  2. TS流文件

    简单介绍编辑 随着从HDTV录制的高清节目在网上的流传,烧友们对TS这个名词大概已经不陌生了.但随之而来就是怎样播放.怎样加入字幕等等的一系列问题.本文将重点介绍一下这方面的应用操作. 先来简要介绍一 ...

  3. wcf系列5天速成——第一天 binding的使用(1)

    原文:wcf系列5天速成--第一天 binding的使用(1) 作为WCF速成系列,只介绍些项目开发中常用到的实战知识. 学习wcf,还是对其中的几个术语要了解一下.wcf中有一个ABC的概念,就是 ...

  4. 【百度地图API】多家地图API文件大小对比

    原文:[百度地图API]多家地图API文件大小对比 于2011.6.9日更新百度地图API文件大小.同时更新图片. 任务描述: 明天就是元宵佳节啦~这是一个团团圆圆的节日,于是,再次想把各家API聚在 ...

  5. AngularJS之使用控制器封装业务逻辑

    AngularJS之使用控制器封装业务逻辑 控制器的作用 我们知道,在AngularJS中,实现数据绑定的核心是scope对象.那么控制器又有什么用呢? 简单地说,没有控制器/controller,我 ...

  6. Spark入门级小玩

    ·背景 随着周边吐槽hadoop的声音渐渐多起来之后,spark也逐渐进入了大家的视野.之前,笔者有粗略的写过一篇spark的安装和性能比较[http://www.cnblogs.com/zacard ...

  7. github basic usage in windows

    1. create a new accout, create orginazation, create repo 2. install git in your local pc Note: you c ...

  8. java抽象类和接口的区别(转载)

    1.Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用. 如果向一个抽象类里加入 ...

  9. 关于Office 中的墨迹功能(可作word电子签名)

    原文 关于Office 中的墨迹功能 通过使用 Microsoft Office 2003 中的墨迹功能,可使用 Tablet PC 和 Tablet 笔将手写笔记插入到 Microsoft Offi ...

  10. 分区表在安装系统(MBR)丢失或损坏

    操作系统能识别出硬盘中的各个不同的分区,是靠硬盘分区表(MBR)来识别的. 硬盘分区表中记录了各个分区的位置和大小以及类型等信息,假设这个分区表破坏了,那么这块硬盘里面的分区就会丢失.系统是无法在浏览 ...