控件与布局(WPF)

内容大概:
1)6类控件介绍及派生关系

2)WPF的UI元素类型介绍

3)内容模式的详解

4)UI布局简介

控件
控件无外乎6类:

1)布局控件:Grid、StackPanel、DockPanel等等这些可以容纳其他控件或者说是嵌套其他控件,主要用于UI上的组织和排列。共同的父类是Panel。

2)内容控件:Window、Button等属于这类,只能容纳一个控件作为其内容。共同父类ContentPanel。

3)带标题内容控件:顾名思义,比内容控件多个标题。典型代表:GroupBox、TabItem….共同父类HeaderedContent。

4)条目控件:ListBox、ComboBox等,可以显示一列数据。共同父类ItemsControl。

5)带标题条目控件:比条目控件多个Header。TreeVievItem、MenuItem等典型代表。基类为HeaderedItemsControl。

6)特殊内容控件:这类控件相对是独立的。有TextBox、TextBlock等等

派生关系:

继承关系

WPF的UI元素的类型

在这里插入图片描述
WPF的UI类型
在这里插入图片描述

各类内容模型详解
1)ContentControl家族

特点:

1.基类均为ContentControl

2.都是控件[Control]

3.内容属性名称为Content

4.只能由单一元素充当其内容

重点理解“只能由单一元素充当其内容”。最好的解释莫过于用Coding了。

以Button为例:第一个Button的内容为一个静态文本,第二个button的内容为一张图片
在这里插入图片描述

run:

image

假如你想在同一个Button中既显示TextBlock又要显示image:

error:报错说[属性“Content”已设置多次]。

error
在这里插入图片描述

ContentControl家族的控件有:

ContentControl_Children

2)HeaderedContentControl家族

特点:

1.都派生自HeaderedContentControl,HeaderedContentControl派生自ContenControl。

2.用于显示带标题的数据。

3.除了显示主题内容的区域外,还有一个显示Header的区域。

4.内容属性分为Content和Header。

5.无论是Content还是Header都只能容纳一个元素作为其内容。

包含的控件有:Expander、GroupBox、headeredContentControl、TabItem。

做个GroupBox的Coding:

image

3)ItemsControl家族

特点:

1.都派生自ItemsControl。

2.都是控件,用于显示列表化数据。

3.内容属性为Items或ItemsSource。

4.每种ItemsControl都对应有自己的条目容器(Item Container)。

ItemsControl家族包含控件有:

ItemsControl_Children

ListBox是ItemsControl的典型代表,下面以它为例:

Li.Lin wpf /ListBox>

Run:

image

注意!其中的 wpf 没有包含在…中,是因为这对标签是可以省略的。也就是说,无论你把什么数据或数据集合丢给ListBox,它都会以…包装,因此我们完全可以不写。

不过,大多数情况下,ListBox是用来动态显示后台的数据,而非控件。

接着Coding:

程序中定义一个Employee类:

public class Emplayee
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
再定义一个Employee类型的集合:

List employeeList = new List()
{
new Emplayee(){Id=1,Name=“LiLin”,Age=23},
new Emplayee(){Id=2,Name=“Tom”,Age=26},
new Emplayee(){Id=3,Name=“Guo”,Age=29},
new Emplayee(){Id=4,Name=“Yan”,Age=20},
new Emplayee(){Id=5,Name=“Tom”,Age=30},
};
在程序的主界面上定义一个名为listBoxEmployee的ListBox。接下来我们写:

this.listBoxEmployee.DisplayMemberPath = “Name”;
this.listBoxEmployee.SelectedValuePath = “Id”;
this.listBoxEmployee.ItemsSource = employeeList;

Run:

image

DisplayMemberPath这个属性的value是只ListBox显示数据的属性。也就是说,ListBox会去调用这个属相的ToString()方法,把得到的字符串放入一个TextBlock(文本控件),then再Textblock放入ListBoxItem中。这是简单的显示,需要复杂的显示就需要用到DataTemplate。

SelectedValuePath属性与SelectValue属性配合使用。

以下列出ItemsControl对应的Item Container:

Item Container

HeaderedItemsControl家族
该家族控件除了具有ItemsControl的特性外,还具有显示Header 的能力。

特点:

1.均派生自HeaderedItemsControl类。

2.都是控件,用于显示列表化数据,同事显示一个标题。

3.内容属性有:Items、ItemsSource、Header。

本家族控件有MenuItem、TreeViewItem、ToolBar。

Decorator家族
该家族在UI上期装饰效果。如Border元素把一些内容加边框;在ViewBox元素里的内容可以自由缩放。

特点:

1.均派生自Decorator类。

2.起UI装饰作用。

3.内容属性为Child。

4.只能由单一元素充当内容。

家族元素:

Decorator

TextBox和TextBlock
这两个都是用来显示文本。区别是TextBlock只能显示不能编辑;TextBox允许编辑文本。除了这个区别,它们的内容属性也不一样。TextBlock由于需要操纵格式,其内容属性为InLines(行),同时保留Text属性。而TextBox得内容属性为Text。

Sharp家族
Sharp家族元素是视觉元素,而非控件,内容自己的内容。不过可以用Fill属性填充效果,Stroke属性设置边线。

特点:

1.均派生自Sharp。

2.用于2D图形绘制。

3.无内容属性。

4.使用Fill属性设置填充,使用Stroke属性设置边线。

Panel家族
这是一个用于UI布局的家族。该家族特点:

1.均派生自Panel抽象类。

2.控制UI布局。

3.内容属性为Children。

4.内容可以为多个元素,并控制它们的布局。

本家族元素:

Panel

UI布局(Layout)简介
WPF是专门的用户界面技术,因此布局功能是它的核心功能之一。在WPF的布局元素中,既有像传统的Windows Form和APS.NET的绝对坐标定位元素,也有像HTML页面那样用行列定位的。

WPF多了一个Content的概念——包含。以窗体为根,整个WPF的UI形成树形结构,叫做可视化树。

WPF的布局元素属于Pane家族。

WPF中的布局元素:

1.Grid:网格。类似HTML中的Table。

2.StackPanel:栈式面板。竖直或水平排成一条直线。

3.Canvas:画布。绝对坐标定位,类似于Windows Form的布局。

4.DockPanel:泊靠式面板。

5.WrapPanel:自动折行面板。排满一行自动折行,类似HTML中的流式布局。

https://www.cnblogs.com/lnetmor/archive/2011/11/20/2256251.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常好用的WPF控件库是指在WPF应用程序开发中,提供了丰富、易用且功能强大的控件集合的开发工具。这些控件库可以帮助开发人员更快速、高效地构建出现代化、具有吸引力的用户界面。 一个好用的WPF控件库应该具有以下特点: 1. 丰富的控件选择:提供了大量常用的控件,如按钮、文本框、下拉框等基础控件,并且还包含了一些高级控件,如图表控件、日期选择器、树控件等,可以满足不同应用场景的需求。 2. 高度的可定制性:控件库应该提供灵活的样式和模板机制,使开发人员可以根据自己的需求自定义控件的外观和行为,以实现与应用程序的整体风格和要求相匹配。 3. 良好的性能和高效的数据绑定:控件库应该经过优化,确保在大数据量或复杂数据结构的情况下,控件仍能保持良好的性能。同时,应提供便捷的数据绑定机制,使开发人员能快速绑定数据并实现响应式UI。 4. 完善的文档和示例:控件库应该提供清晰、详尽的文档,包括使用说明、示例代码和常见问题解答等,以帮助开发人员快速掌握和使用控件库。 5. 良好的支持和更新:好的控件库开发商应该提供及时的技术支持,并持续进行更新和改进,以适应不断变化的技术需求和市场需求。 总之,一个非常好用的WPF控件库能够极大地提高开发效率和用户体验,帮助开发人员轻松实现复杂的界面设计和交互功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值