WPF的布局控件都在 System.Windows.Controls.Panel 这个基类下面,使用 WPF提供的各种控件在WPF应用程序中界面进行布局,同时对各种子控件(如按钮、文本框,下拉框等)进行排列组合。

  

  Pane类的公共属性太多了。就简单介绍几个常见的属性如下表。

名称

说明

Cursor

获取或设置在鼠标指针位于此元素上时显示的光标。

DataContext

获取或设置元素参与数据绑定时的数据上下文。

Dispatcher

获取与此 DispatcherObject 关联的 Dispatcher。

FontFamily

获取或设置控件的字体系列。

FontSize

获取或设置字号。

FontWeight

获取或设置指定的字体的权重或粗细。

Foreground

获取或设置描述前景色的画笔。

HandlesScrolling

获取一个值控件是否支持滚动。

Height

获取或设置元素的建议高度。

HorizontalContentAlignment

获取或设置控件内容的水平对齐。

IsLoaded

获取一个值,该值指示是否已加载此元素以供呈现。

IsMouseOver

获取一个值,该值指示鼠标指针是否位于此元素(包括可视树上的子元素)上。这是一个依赖项属性。

IsTabStop

获取或设置一个值控制是否在选项卡上导航包含。

IsVisible

获取一个值,该值指示此元素在用户界面 (UI) 中是否可见。这是一个依赖项属性。

LayoutTransform

获取或设置在执行布局时应该应用于此元素的图形转换方式。

Margin

获取或设置元素的外边距。

Name

获取或设置元素的标识名称。 该名称提供一个引用,以便当 XAML 处理器在处理过程中构造标记元素之后,代码隐藏(如事件处理程序代码)可以对该元素进行引用。

Opacity

获取或设置当 UIElement 在用户界面 (UI) 中呈现时为其整体应用的不透明度因子。这是一个依赖项属性。

Padding

获取或设置控件中的空白。

RenderTransform

获取或设置影响此元素的呈现位置的转换信息。这是一个依赖项属性。

TabIndex

获取或设置使用 tab 键时,确定顺序接收焦点的元素的值,当用户将控件定位。

Tag

获取或设置任意对象值,该值可用于存储关于此元素的自定义信息。

ToolTip

获取或设置在用户界面 (UI) 中为此元素显示的工具提示对象。

TouchesCaptured

获取在此元素上捕获的所有触摸设备。

TouchesCapturedWithin

获取在此元素或其可视化树中的任何子元素上捕获的所有触摸设备。

VerticalContentAlignment

获取或设置控件内容的垂直对齐方式。

Visibility

获取或设置此元素的用户界面 (UI) 可见性。这是一个依赖项属性。

VisualOpacityMask

获取或设置 Brush 值,该值表示 Visual 的不透明蒙板。

Width

获取或设置元素的宽度。

一个Panel 的呈现就是测量和排列子控件,然后在屏幕上绘制它们。所以在布局的过程中会经过一系列的计算,那么子控件越多,执行的计算次数就越多,则性能就会变差。如果不需要进行复杂的布局,则尽量少用复杂布局控件(如 Grid和自定义复杂的Panel);如果能简单布局实现就尽量使用构造相对简单的布局(如 Canvas、UniformGrid等),这种布局可带来更好的性能。 如果有可能,我们应尽量避免调用 UpdateLayout方法。 
      每当Panel内的子控件改变其位置时,布局系统就可能触发一个新的处理过程。对此,了解哪些事件会调用布局系统就很重要,因为不必要的调用可能导致应用程序性能变差。 
      换句话说,布局是一个递归系统,实现在屏幕上对控件进行大小调整、定位和绘制,然后进行呈现。具体如下图,要实现控件0的布局,那么先要实现0的子控件 01,02...的布局,要实现01的布局,那么得实现01的子控件001,002...的布局,如此循环直到子控件的布局完成后,再完成父控件的布局, 最后递归回去直到递归结束,这样整个布局过程就完成了。

  

布局系统为Panel中的每个子控件完成两个处理过程:测量处理过程(Measure)和排列处理过程(Arrange)。每个子 Panel 均提供自己的 MeasureOverride 和 ArrangeOverride 方法,以实现自己特定的布局行为。

WPF 之 布局(一)的更多相关文章

  1. WPF简单布局 浅尝辄止

            WPF的窗口只能包含一个元素,为了在WPF窗口中放置多个元素并创建更实用的用户界面,需要在窗口上放置一个容器,然后在容器中放置其它元素. 注意:造成这一限制的原因是window类继承自 ...

  2. WPF UI布局之概述

    在线演示:http://v.youku.com/v_show/id_XNzA5NDk2Mjcy.html 清晰版视频+代码下载:http://115.com/lb/5lbeer0m9lad 一.简单介 ...

  3. WPF(布局)

      WPF编程学习——布局   本文目录 1.布局简介 2.面板(Panel) 3.视图框(Viewbox) 4.滚动视图控件(ScrollViewer) 5.公共布局属性 1.布局简介 应用程序界面 ...

  4. Wpf之布局

    Wpf之布局 上一章大家有了自己的一个Hello World的wpf程序,今天咱们就一起走进WPF,一起来看看wpF的前台xaml这门语言的魅力. 写过web 的人都知道布局这个概念,在web中布局和 ...

  5. WPF常用布局介绍

    概述:本文简要介绍了WPF中布局常用控件及布局相关的属性 1 Canvas Canvas是一个类似于坐标系的面板,所有的元素通过设置坐标来决定其在坐标系中的位置..具体表现为使用Left.Top.Ri ...

  6. wpf(布局与Canvas )

    WPF的布局有控件都在System.Windows.Controls.Panel这个基类下面,常见的布局控件: . canvas: Canvas是最基本的面板,它不会自动调整内部元素的排列及大小,它仅 ...

  7. 【WPF】 布局篇

    [WPF] 布局篇 一. 几个常用且至关重要的属性 1. Width,Height : 设置窗体,控件宽高. 这里注意,WPF是自适应的, 所以把这2个属性设置 Auto, 则控件宽高会自动改变. 2 ...

  8. Wpf的布局舍入属性(可以解决软件字体模糊的问题)

    原文:Wpf的布局舍入属性(可以解决软件字体模糊的问题) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/HK_JY/article/details/ ...

  9. WPF 等距布局

    原文:WPF 等距布局 本文告诉大家如何使用 WPF 的自定义布局做等距布局. 实际做的效果很简单,因为在开发我容易就用到了等距的控件.等距控件就是在指定的宽度下,平均把控件放在水平的地方,这样相等于 ...

随机推荐

  1. 左手坐标系&右手坐标系

    [左手坐标系&右手坐标系] 左手坐标系的正方向.从原点看到某轴正向时,逆时针即为正方向.相反地,从某轴正方向看看原点时,为顺时针即为正方向. 如果判断左手坐标系下叉积的方向.如果A.B向量首尾 ...

  2. hdu 1044 Collect More Jewels(bfs+状态压缩)

    Collect More Jewels Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  3. Intellij IDEA 14.x 中的Facets和Artifacts的区别

    Facets和Artifacts的区别: Facets 表示这个module有什么特征,比如 Web,Spring和Hibernate等: Artifact 是maven中的一个概念,表示某个modu ...

  4. C#: 方法的默认参数

    大家都知道在C++中,我们可以为方法的参数指定一个默认值,像这样: void foo(int i = 100); 当我们以这种形式调用方法的时候: foo(); 实际上参数i被赋于了默认值,所以相当于 ...

  5. magento目录结构精编版

    1 /app – 程序根目录 2 3 /app/etc – 全局配置文件目录 4 5 /app/code – 所有模块安装其模型和控制器的目录 6 7 /app/code/core – 核心代码或经过 ...

  6. Server-U_详细配置

    1.首先绿化 Server-U,运行 2.打开Server-U自动弹出如下图:如果不自动弹出,那点击界面上的 新建域  ------ 先有域再有用户,用户在域里面 4. 输入“名称”和“说明”,其中“ ...

  7. git filename to long问题解决

    在.git/config 下面编辑 [core] longpaths = true

  8. List排序忽略大小写

    public List<String> sortListIgnoreCase(List<String> list) {        Collections.sort(list ...

  9. ASSER、VERIFY、TRACE详解

    ASSERT()被测试它的参数,如果参数为零,则中断执行并打印一段说明消息.在Release版本的程序中它不起任何作用. ASSERT()使用的时候必须保证参数表达式中不能有函数调用,因此对于任何有函 ...

  10. vim复制多行<转>

    比如我要复制从第1行到第5行的数据,复制到第9行 光标移到第5行任意位置,输入ma光标移到第1行任意位置,输入y'a(这一定要打这个“'”单引号,否则就进入“INSERT”状态了光标移到需要复制的行, ...