zoukankan      html  css  js  c++  java
  • 《深入浅出WPF》学习笔记之控件与布局

    WPF在事件驱动的基础上引入了数据驱动界面的理念,让数据重归核心地位,让UI回归数据展现的地位。

    控件是数据和行为的载体,我们关注的应该是抽象的数据和行为而不是控件的具体形象。

    控件分为布局控件、内容控件(只能容纳其他一个控件)、带标题内容控件(可以设置标题的内容控件)、条目控件(可以显示一组数据)、带标题条目控件(可以显示一个标题的条目控件,通常用来显示带有层级关系的数据)、特殊内容控件(如TextBox)。

    控件的内容可以为控件,这样会形成控件的嵌套结构,从而形成一个树形结构,如果观察由控件组成的树,这颗树称为逻辑树(LogicalTree)。控件往往由更基本的控件组成,如果把所有这些考虑进树形结构,则这颗树称为可视化树(VisualTree)。

    控件的内容属性是一个统称,不同的控件叫法不一样,有些叫Content、有些叫Child、有些叫Children、还有些叫Items。控件的内容属性与标签的内容对应,即标签的内容自动赋值到控件的内容属性。

    ContentControl族,内容属性为Content,只能由单一元素充当内容。

    HeaderContentControl族,内容属性是Header和Content,都只能容纳一个元素,Content属性映射到标签的内容区域。

    ItemsControl族,内容属性是Items和ItemsSource,都对应有自己的条目容器。会自动使用条目容器包装每项数据。

    HeaderedItemsControl族,内容属性是Items、ItemsSource和Header。

    Decorator族,起UI装饰作用,内容属性为Child,只能由单一元素充当内容。

    TextBlock,内容属性为Inlines,有丰富的显示格式与排版控制。

    TextBox,显示简单的字符串,并可以编辑,内容属性是Text。

    Shape族元素,在UI上显示图形,不是控件,没有内容属性,用于2D图形绘制。

    Panel族,UI布局控件的基类,内容属性为Children,内容可以是多个元素。

    Grid:

    以网格的形式对元素进行布局,行的高度和列的宽度可以使用绝对数值、相对比例(*)、自动调整(auto),还可以设置最大值和最小值。宽度和高度设置的绝对数值单位为px、in、cm、pt。比例值(*)指未被占用空间按比例分配。

    StackPanel:

    在纵向上或横向上排列元素,注意默认会自动充满横向空间和纵向空间,不会自动换行,通过Orientation控制排列方向。

    Canvas:

    可以进行绝对定位布局,通过设置Canvas.Left和Canvas.Top等定位元素,除非确定布局不会改变,否则尽量少使用Canvas布局。

    DockPanel:

    可以设置内部元素的停靠方向,通过设置DockPanel.Dock设置子控件的停靠方向。

    GridSplitter:

    可以通过鼠标拖动来动态改变Grid表格的行列的高度或宽度。

    WrapPanel:

    采用流式布局,通过Orientation控制流的方向,当到达行尾或列尾时可以实现自动换行。

  • 相关阅读:
    HDU 4972 A simple dynamic programming problem
    dd usb 启动盘制作 成功版本
    1233
    openstack kvm 虚拟机磁盘差异衍生
    怎样安装g++/gdb
    区间最小值 线段树 (2015年 JXNU_ACS 算法组暑假第一次周赛)
    hdu
    TCP/IP解析(一):TCP/IP的工作方式
    使用Python生成源文件的两种方法
    zoj1003 Crashing Balloon
  • 原文地址:https://www.cnblogs.com/jefflee/p/5807703.html
Copyright © 2011-2022 走看看