WPFの布局中Panel的选用
一、Canvas
这个容器能够对元素做准确的定位,但同时也是其创建的页面不够灵活。
二、StackPanel
最大的优点是:他会顺序的对他的子元素进行排列显示。(没有任何附加属性)
要注意的是:他有两个属性:Orientation和FlowDirection从而可以设置子元素的排列显示形式
Orientation的值设为Horizontal则为水平排列,设为Vertical则垂直排列。
FlowDirection的值设为RightToLeft,则从右向左排列。设为LeftToRight,则从左向右排列。
三、WrapPanel
类似于StackPanel,具有StackPanel的属性和功能(也具有FlowDirection属性的设置)。
同时,它还具有向我们通常用的windows资源管理器一样,会随着窗口的大小,从而将子元素进行合理的分行显示,而不会出现因为窗口变小从而是一些子元素无法显示。
四、DockPanel
与Cavas相似的是,他也是从容器的边缘来定位子元素的位置。不同的是,它只能让子元素简简单单的停靠在容器边缘,然后拉伸来填充整个panel
五、Grid
类似于HTML中的Table
1、通过<Grid.RowDefinitions> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="2*"></RowDefinition> <RowDefinition Height="3*"></RowDefinition> <RowDefinition Height="4*"></RowDefinition> </Grid.RowDefinitions>
<Grid.ColumnDefinitions> <ColumnDefinition Width="auto"></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions>类似于以上的语法来为Grid添加行和列。
2、每个单元格可以设置为空,也可以放多个元素。
3、RowSpan和ColumnSpan来设置单元格的跨行跨列属性。
4、行和列的高度和宽度的设置:auto:自动尺寸监控
(像素):绝对尺寸
(带“*”的数字)比例尺寸
5、GridSplitter
将GridSplitter放到一个一个单元格中可以通过鼠标改变该单元格的大小:
它的两个属性:设置为VerticalAlignment="Bottom" HorizontalAlignment="Stretch"时,就会在单元格的下方显示可以改变单元格的高度。
VerticalAlignment="Stretch" HorizontalAlignment="Right" 就会改变单元格的宽度。
值得注意的是:水平方向和垂直方向有一个的值必须设为Stretch,否则的话是一个小点,就无法实现其功能。
GridSplitter必须有一个显示的Width和Height这样才能看到,并且启到作用。
6、共享行和列的尺寸。
ColumnDefinition 和RowDefinition都有一个共同的属性:SharedSizeGroup 它的值是一个自定义的值,这样被标记的具有同样值的行和列就会一直有相同的呈现形式,其中的一个改变,另一个也会改变。
但值得注意的是在使用这个属性的时候,要将grid的共享开启: <Grid Name="parentGrid" Grid.IsSharedSizeScope="True">....</Grid>
六、处理内容溢出
1、剪切(clipping)
大部分面板都有一个Boolean的属性ClipToBounds并且它们的值都设为true,所以只要是溢出面板的都会被剪切掉
只有 Canvas面板的这个属性可以设置,并且ClipToBounds的值默认是false。
2、滚屏(scrolling)
只需将所有的元素(或面板)放入到一个<ScrollViewer >.....</ScrollViewer>内即可。他有属性:VerticalScrollBarVisibility(默认值Visible)和HorizontalScrollBarVisibility(默认值Auto)可以设置他们的值:Visible,Hidden,Auto,Disabled
3、缩放(scaling)
将内容放置到<Viewbox>...</Viewbox>之内即可实现缩放。
属性Stretch:值
Uniform(默认):显示整个元素到窗体的空间上,会随着窗体的大小而自动缩放,(但是某个方向上可能因为比例不合适而无法填充剩余空间)
UniformToFill:在保存外观比例同时缩放子元素来完全填充viewbox内的空间(但是某个方向上可能因为比例不合适而要截断部分显示)
None:不进行缩放,与不用viewbox没什么区别。
Fill:显示子元素到viewbox中,各个方向都要拉伸以填充所有空间。
属性StretchDirection值
Both(默认)扩大或缩小内容。DownOnly:如果合适缩小内容。如果内容足够小,viewbox保持当前内容大小不变。UpOnly:如果合适扩大内容,如果内容足够大,Viewbox保持当前内容大小不变。
WPFの布局中Panel的选用的更多相关文章
- WPF快速入门系列(1)——WPF布局概览
一.引言 关于WPF早在一年前就已经看过<深入浅出WPF>这本书,当时看完之后由于没有做笔记,以至于我现在又重新捡起来并记录下学习的过程,本系列将是一个WPF快速入门系列,主要介绍WPF中 ...
- 学习WPF——WPF布局——了解布局容器
WPF布局工作内部原理 WPF渲染布局时主要执行了两个工作:测量和排列 测量阶段,容器遍历所有子元素,并询问子元素所期望的尺寸 排列阶段,容器在合适的位置放置子元素,并设置元素的最终尺寸 这是一个递归 ...
- 浅谈 WPF布局
我们首先来了解一下图形化用户界面(Graphic User Interface)也就是我们常常听到的GUI.举个简单的例子,同样是数据,我们可以用控制台程序加格式控制符等输出,但是这些都不如GUI来的 ...
- WPF布局系统[转]
转自:http://www.cnblogs.com/niyw/archive/2010/10/31/1863908.html前言 前段时间忙了一阵子Google Earth,这周又忙了一阵子架构师论文 ...
- WPF布局控件常用属性介绍
WPF布局控件常用属性介绍 其它 | 作者:慧都控件网 | 2011-04-06 13:41:57| 阅读 0次 有用(0) 评论(0) 概述:WPF布局控件都是派生自System.Windows ...
- 浅谈WPF本质中的数据和行为
WPF缩写为Windows Presentation Foundation的缩写,本文所要谈的就是WPF本质中的数据和行为,希望通过本文能对大家了解WPF本质有所帮助. 如果自己来做一个UI框架,我们 ...
- WPF布局原则
WPF系统使用基于流布局的布局标准,开发人员创建与显示分辨率和窗口大小无关的用户界面.在不同显示器上可以进行很好的缩放. 首先来谈一谈布局原则: WPF窗口只能包含一个元素(Window元素属于内容控 ...
- WPF布局之让你的控件随着窗口等比放大缩小,适应多分辨率满屏填充应用
一直以来,我们设计windows应用程序,都是将控件的尺寸定好,无论窗体大小怎么变,都不会改变,这样的设计对于一般的应用程序来说是没有问题的,但是对于一些比较特殊的应用,比如有背景图片的,需要铺面整个 ...
- WPF 布局总结
一.WPF布局原理 WPF窗口只能包含单个元素,为在WPF窗口中放置多个元素,需要放置一个容器,让后在容器中添加其他元素.“理想的”WPF窗口需遵循以下几个原则: 1.不应显示设定元素的尺寸.元素应当 ...
随机推荐
- [转]Apache Maven 入门篇 ( 上 )
原文地址:Apache Maven 入门篇 ( 上 ) 作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这 ...
- jQuery中处理事件冒泡的方法和取消后续内容的方法
一:事件冒泡的意思是:一个大的容器已经设置了事件,如果这个容器里还包容着一个小的容器也设置了自己的事件,那么因为小容器是在大容器里面的,触发小容器的事件同时也等于触发了大容器的事件,有时这并不是我们想 ...
- explode and implode
[PHP源码阅读]explode和implode函数 explode和implode函数主要用作字符串和数组间转换的操作,比如获取一段参数后根据某个字符分割字符串,或者将一个数组的结果使用一个字符 ...
- paper 93:OpenCV学习笔记大集锦
整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...
- visio的简单用法
visio图边缘会自动扩展 将常用工具放到收藏夹中,拖进去就可以用. 基本形状基本能够满足一般的需求. 支持自己定义形状,将定义好的形状右击组合之后,收藏到收藏夹或导出模版. 多用组合,收藏夹,调整图 ...
- [记录]firefox繁体转换成简体的油猴脚本
// ==UserScript== // @name 繁简转换 // @include *.* // @author yecao // @version 0.1 // @include * // @e ...
- 【pyQuery】抓取startup news首页
#! /usr/bin/python # coding: utf-8 from pyquery import PyQuery c=PyQuery('http://news.dbanotes.net/' ...
- z/os上的tar和gzip(3)
前面两篇文章分别讲过了如何合并并压缩批量文件,如何解压缩并恢复批量文件, 这些问题解决了之后还剩下一个大问题,如何在网络上传输这些压缩过的文件,如果是linux的话非常简单,制定binary,然后ge ...
- 锋利的JQuery(六)
$.ajax():可以设定beforeSend.error.success.complete等 $.getScript():加载JS文件 $.getJSON():加载JSON文件 $.each():通 ...
- 一个Convert、TryParse数据转换的问题
今天在进行数据转换的时候遇到一个问题,记录下,希望看到的童鞋有点用哦~ Convert.ToInt32(0.80155023553515) 结果为1 但是以下的做法,就不是想当然的结果咯~ int.T ...