ContentControl 族

只能由单一元素充当其内容(即只存放静态文本或只存放图片)

内容属性为Content

HeaderedContentControl 族

HeaderedContentControl是HeaderedContent的派生类

除了用于显示主体内容的区域外,控件还具有显示标题(Header)的区域

内容属性为Content和Header

eg:GroupBox

    <Grid><GroupBox Height="100" Width="200" Margin="10" BorderBrush="Red"><GroupBox.Header><TextBlock Text="古朗月行" FontSize="15" /></GroupBox.Header><TextBlock TextWrapping="WrapWithOverflow" Margin="10" Text="窗前明月光,疑是地上霜。举头望明月,低头思故乡" FontSize="13"/></GroupBox></Grid>

ItemsControl族

用于显示列表化数据,内容属性为Items或ItemsSource

每种ItemsControl都有自己的条目容器(Item Container)

本族控件会自动使用条目容器对提交给它的内容进行包装

    <Grid><ListBox Margin="50" Height="130" Width="60"><CheckBox Content="Tim"/><CheckBox Content="Tim"/><CheckBox Content="Tim"/><Button Content="Amy"/><Button Content="Amy"/><Button Content="Amy"/></ListBox></Grid>

HeaderedItemsControl族

参考ItemsControl族

Decorator族

起UI装饰作用,内容属性为Child

只能由单一元素充当内容

TextBlock和TextBox

最主要的功能是显示文本

TextBlock只能显示文本,不能编辑,又称静态文本。由于需要操纵格式,所以它的内容属性是Inlines,同时也保留了Text属性,用于显示简单的字符串

TextBox允许用户编辑其中的内容(字符串),内容属性为Text

Shape族

Shape族元素(只是简单的视觉元素,非控件)是专门用来绘制图形的元素,没有自己的内容

可使用Fill属性为其设置填充效果,使用Stroke属性设置边线

Panel族

用于控制UI布局,内容属性为Children,内容可以是多个元素

Grid:网格

适用场景:(1)UI布局的大框架设计

(2)大量UI元素需要成行或者成列对齐的情况

(3)UI整体尺寸改变时,元素需要保持固有的高宽比例

(4)UI后期可能有较大变更或扩展

eg:利用Grid和GridSplitter来添加可拖拽分隔栏

   <Grid><Grid.RowDefinitions><RowDefinition Height="55"/><RowDefinition/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width=" 150"/><ColumnDefinition Width="auto"/><ColumnDefinition/></Grid.ColumnDefinitions><TextBox Grid.ColumnSpan="3" BorderBrush="Black" /><GridSplitter Grid.Row="1" Grid.Column="1" VerticalAlignment="Stretch" HorizontalAlignment="Center" Width="5" Background="Gray" ShowsPreview="False" ></GridSplitter><TextBox Grid.Row="1" Grid.Column="2" BorderBrush="Black"/></Grid>

StackPanel:栈式面板。水平或垂直排列元素,自动补缺

适用场景:(1)同类元素需要紧凑排列(如制作菜单或列表)

(2)移除其中的元素后能够自动补缺的布局或动画

Canvas:画布。内部元素可以使用像素为单位的绝对坐标进行定位

适用场景:(1)一经设计基本上不会再有改动的小型布局(如图标)

(2)艺术性较强的布局

(3)需要大量使用横纵坐标进行绝对点定位的布局

(4)依赖横纵坐标的动画

DockPanel:泊靠式面板。内部元素可以选择泊靠方向(借助dock属性)

DockPanel还有一个重要属性——bool类型的LastChildFill,默认值为True,当True时,DockPanel内最后一个元素的DockPanel.Dock属性值会被忽略,此元素会把DockPanel内部所有剩余空间填满。

WrapPanel:自动拆行面板。采用流式布局,通过Oroentation属性控制流延伸的方向,使用HorizontalAlignment 和VerticalAlignment控制内部控件的对齐,内部元素排满一行后能够自动拆行

   <WrapPanel><Button Width="50" Height="50" Content="OK"/><Button Width="50" Height="50" Content="OK"/><Button Width="50" Height="50" Content="OK"/><Button Width="50" Height="50" Content="OK"/><Button Width="50" Height="50" Content="OK"/><Button Width="50" Height="50" Content="OK"/><Button Width="50" Height="50" Content="OK"/><Button Width="50" Height="50" Content="OK"/></WrapPanel>

【WPF】UI元素--《深入浅出WPF》by刘铁锰相关推荐

  1. WPF(一) WPF基本控件与布局

    ​ WPF(Windows Presentation Foundation)是微软推出的基于Windows的用户界面框架,中文译为"Windows呈现基础",属于.NET Fram ...

  2. WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆)

    原文:WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆) 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.欢迎转载.使用.重新发布,但务必保 ...

  3. WPF实例秀——如何获取UI元素的图像

    这个标题还真难说明白,我还是再解释一下吧. 比如我想在UI上拖拽某个元素,拖拽过程中,我需要让这个UI元素的影相跟着鼠标移动(但UI还停留在原位),当放开鼠标的时候,UI元素移动到新的位置. 这是个很 ...

  4. 深入浅出WPF——附加事件(Attached Event)

    3.3 事件也附加--深入浅出附加事件 WPF事件系统中还有一种事件被称为附加事件(Attached Event),简言之,它就是路由事件."那为什么还要起个新名字呢?"你可能会问 ...

  5. 深入浅出WPF(2)——解剖最简单的GUI程序

    深入浅出WPF(2)--解剖最简单的GUI程序 小序: 从这篇文章开始,我们进行XAML语言的上手学习.说实话,XAML这种语言一点也不难.如果把XML看成是"父类",那么XAML ...

  6. 《深入浅出WPF》笔记——绑定篇(一)

    上一节,有记录写到:在WPF里,数据驱动UI,数据占核心地位,UI次之.怎么恢复数据的核心地位,那就要先了解一下Binding. 一.Binding 基础 1.1WPF中Data Binding的带来 ...

  7. WPF学习之深入浅出话模板

    图形用户界面应用程序较之控制台界面应用程序最大的好处就是界面友好.数据显示直观.CUI程序中数据只能以文本的形式线性显示,GUI程序则允许数据以文本.列表.图形等多种形式立体显示. 用户体验在GUI程 ...

  8. 深入浅出WPF——XAML的优点

    深入浅出WPF--XAML的优点 正文: 2. XAML有哪些优点  前面一节已经向我们透露了XAML的几个优点: • XAML可以设计出专业的UI和动画--好用 • XAML不需要专业的编程知识,它 ...

  9. [转]深入浅出WPF(7)——数据的绿色通道,Binding

    本文转自:http://liutiemeng.blog.51cto.com/120361/95273 小序: 怎么直接从2蹦到7啦?!啊哦,实在是不好意思,最近实在是太忙了,忙的原因也非常简单--自己 ...

最新文章

  1. C/C++数组名与指针区别深入探索
  2. 你真的理解JS的继承了吗?
  3. C++11 —— 简易的旋转锁类
  4. java github_GitHub Research:超过50%的Java记录语句写错了
  5. 亿佰特Lora网关技术为马拉松保驾护航
  6. java.sql.SQLException: ORA-01691: Lob 段 SONARQUBE2.SYS_LOB0000119128C00008$$ 无法通过 128 (在表空间 USERS 中
  7. java final date_Java中的时间和日期(上)
  8. 快速定位NodeJs线上问题 - 之火焰图篇
  9. sh/bash/csh/Tcsh/ksh/pdksh等shell本质区别
  10. 释放摄像头_防爆摄像头在使用过程中会遇到哪些问题,如何处理
  11. c++用一级运算比较大小_python学习五-python运算符
  12. SANGFOR SCSA——网络基础
  13. NVIDIA 旧版显卡驱动下载及对应CUDA,CUDNN安装教程
  14. Visio 2003 开发入门
  15. oracle替换字符串replace
  16. Java中文乱码问题如何解决?
  17. KVM设备透传与重定向
  18. 好文推荐(十六)——Git使用详细教程
  19. Matlab中num2str函数的用法
  20. 计算机丢失libjcc dll,libjcc.dll 64位

热门文章

  1. VScode怎么将字体灵活缩放
  2. 根据经纬度(lat,lng)查找附近的地点(续)
  3. 怎么让更多的人填写问卷?
  4. 王道计算机考研机试指南自用刷题笔记-自用5
  5. 《Java程序设计》课程设计
  6. ie浏览器使用pdf时需要先安装软件Adobe Reader 9
  7. 在Mac使用Wine运行Windows软件:PanDownload_Beat(非虚拟机)
  8. 基于FPGA的2ASK调制仿真
  9. 什么是GPU云服务器?GPU服务器的cpu和普通CPU有什么区别?
  10. 算法交易的主要类型与策略分析