迟到的 WPF 学习 —— 布局
布局是 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 学习 —— 布局的更多相关文章
- 迟到的 WPF 学习 —— 入门
之所以说"迟到的",是因为我太晚才开始学习 WPF 了,之前 WPF 刚发布的时候有过粗浅了解,那时的 WPF 还非常简陋,VS 提供的内置控件十分匮乏,让我这样的非常依赖 Win ...
- 迟到的 WPF 学习 —— 依赖项属性
本章学习依赖项属性,英文原文 Dependency Property,它是传统 .Net Framework 属性的扩展,是 WPF 的专属,但所幸使用起来和传统属性几乎一样.WPF 元素所提供的大多 ...
- 迟到的 WPF 学习 —— 路由事件
1. 理解路由事件:WPF 通过事件路由(event routing)概念增强了传统的事件执行的能力和范围,允许源自某个元素的事件由另一个元素引发,例如,事件路由允许工具栏上的一个按钮点击的事件在被代 ...
- 迟到的 WPF 学习 —— 控件
这一章书中内容比较多而杂,但每个对象的内容又相对简短,所以只挑选里边有代表性的内容做记录. 1. Label 控件:一个基础的简单的 ContentControl,Labe 支持快捷键文本的设置,可以 ...
- WPF编程学习——布局
本文目录 1.布局简介 2.面板(Panel) 3.视图框(Viewbox) 4.滚动视图控件(ScrollViewer) 5.公共布局属性 1.布局简介 应用程序界面设计中,合理的元素布局至关重要, ...
- WPF学习(3)布局
今天我们来说说WPF的布局.我们知道WinForm的布局主要是采用基于坐标的方式,当窗口内容发生变化时,里面的控件不会随之动态调整,这就造成了一个很不好的用户体验.而WPF为了避免这个缺点,采用了基于 ...
- WPF学习开发客户端软件-任务助手(下 2015年2月4日代码更新)
时光如梭,距离第一次写的 WPF学习开发客户端软件-任务助手(已上传源码) 已有三个多月,期间我断断续续地对该项目做了优化.完善等等工作,现在重新向大家介绍一下,希望各位可以使用,本软件以实用性为主 ...
- WPF学习05:2D绘图 使用Transform进行控件变形
在WPF学习04:2D绘图 使用Shape绘基本图形中,我们了解了如何绘制基本的图形. 这一次,我们进一步,研究如何将图形变形. 例子 一个三角形,经Transform形成组合图形: XAML代码: ...
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
随机推荐
- 文档流 css中间float clear和布局
文档流 先说说什么是公文流转 什么流 它是一系列连续的东西 <div style="background-color:pink;width:40px;height:80px;&quo ...
- 如何使用Ubuntu online account API创建微博HTML5申请书
在这篇文章中.我们将使用Ubuntu SDK提供online account API来訪问微博的API并显示所须要的内容.这篇文章的重点是展示怎样在HTML 5中使用online account AP ...
- MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器
实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器 MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过A ...
- MonkeyRunner于Windows在下面Eclipse开发环境的搭建步骤(并解决在线Jython配置错误的问题)
网上有一shangdong_chu网友写了一篇文章介绍了如何Eclipse构造MonkeyRunner,他做了叙述一个很好的说明.但我对我的环境试验后会见Jython解析错误的问题,和制品缺少Pyde ...
- SSH深度历险记(两) Jboss+EJB一审
学习感悟:每次学习新知识.通过初审会从小事做起,获得成就感.经典Hello Workd我们成功的例子奠定了门哈,呢.非常好的理解了.Ejb的核心. 今天主要以这个小实例,来学习EJB的分布式,我们能够 ...
- iis配置PHP
今天在服务器上配置PHP出现在下面的问题:“HTTP 错误 500.0 - Internal Server Error,C:\php\php-cgi.exe - FastCGI 进程意外退出”,下面说 ...
- java设计模式之七装饰器模式(Decorator)
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个 ...
- ios基金会-XCode温馨提示
(一个)代号规格pragma mark 1.定义 #pragma 开头的代码是一条编译器指令,是一个特定于程序或编译器的指令. 不一定适用于其他编译器或其他环境.假设编译器不能识别该指令.则会将其忽略 ...
- 对象javascript
//对象 var lennon=Object(); lennon.name="John"; lennon.year=1940; lennon.living=false; conso ...
- Codeforces 527C Glass Carving(Set)
意甲冠军 片w*h玻璃 其n斯普利特倍 各事业部为垂直或水平 每个分割窗格区域的最大输出 用两个set存储每次分割的位置 就能够比較方便的把每次分割产生和消失的长宽存下来 每次分割后剩下 ...