布局是 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. Asp.Net实现FORM认证的一些使用技巧

    原文转发:http://www.cnblogs.com/Showshare/archive/2010/07/09/1772886.html 最近因为项目代码重构需要重新整理用户登录和权限控制的部分,现 ...

  2. crawler_java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件_设置代理

    在工作中要用到android,然后进行网络请求的时候,打算使用httpClient. 总结一下httpClient的一些基本使用. 版本是4.2.2. 使用这个版本的过程中,百度很多,结果都是出现的o ...

  3. 线程同步synchronized

    一Java规划共享多个线程之间数据的能力. 当线程以异步方式訪问共享数据时.有时候是不安全的或者不和逻辑的. 比方卖火车票.同一时刻一个线程在读取数据,另外一个线程在处理数据,当处理数据的线程没有等到 ...

  4. Unity插件之NGUI学习(8)—— Table和NGUI尺寸转换为世界坐标系尺寸

    依据 Unity插件之NGUI学习(2),创建一个UI Root,在UI Root下创建一个Texture作为背景图,并设置图片,在Wiget下调整大小:然后在UI Root下再创建一个Panel. ...

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

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

  6. mysql_自动备份

    1 @echo off 2 set errorlevel=0 3 set dump_command="C:\Program Files\MySQL\MySQL Server 5.5\bin\ ...

  7. 电脑报2014年第43期 pdf高清版

    电脑报2014年第43期 pdf高清版

  8. Dialog中显示倒计时,到时自己主动关闭

    这里直接用系统Dialog中加入了倒计时的显示,假设用自己定义Dialog会更美观: private TextView mOffTextView; private Handler mOffHandle ...

  9. cocos2d-x plist在拍照

    if(!CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("scrollicon_bg.png" ...

  10. iframe的各项參数

    iframe的各项參数: <iframe src="test.jsp" width="100″ height="50″ frameborder=" ...