WPF 布局

       在任意用户界面设置中,有一半的工作时以富有吸引力、灵活实用的方式组织内容。但真正的挑战是确保界面布局能恰到好处地适应窗口尺寸。 

       wpf用不同的容器(container)安排布局。每个容器有各自的布局逻辑----有些容器以堆栈方式布局元素,另一些容器在网络中不可见的格中排

序元素,等等。在wpf中非常抵制基子坐标的布局,而是注重创建灵活的布局,使布局能够适应内容的变化、不同的语言以及各人种窗口的尺寸。

移动到 wpf的许多开发人员会觉得新的布局系统令自己倍感惊奇 --- 这也是开发人员面临的第一个挑战。


       wpf布局原则

   wpf窗口只能包含单个元素。为wpf窗口放置多个元素并创建更贴近实用的用户界面,需要在窗口上放置一个容器,然后在这个容器中添加其他元素。

 

   注意:造成这一个限制的原因是 window 类继承自ContentControl类。

    

   在WPF中,布局由您使用的容器来定。尽管有很多个容器可供选择,但“理想的”wpf窗口需要遵循以下重要原则


1,不应显示设定元素的尺寸。元素应当可以改变尺寸以适合他们的内容。例如,当添加更多的文本按钮应当能够扩展。可通过设置最大和最小尺寸来限制

可以接受的控件尺寸范围。

2,不应使用屏幕坐标指定元素的位置。元素应当由它们的容器根据它们的尺寸、顺序以及(可选的)其它特定于具体布局容器的信息进行排列。如果需要在

元素之间添加空白空间,可使用Margin属性。

3,布局容器的子元素“共享”可用的空间。如果空间允许,布局容器会根据每个元素的内容尽可能为元素设置更合理的尺寸。它们还会向一个或子元素分配多余的空间。

4,可嵌套的布局容器。典型的用户界面使用grid面板作为开始,grid面板是wpf中功能最强大的容器,grid面板可包含其他布局容器,包含的这些容器以更小

的分组排序元素,不如带有标题的文本框、列表框中的项、工具栏上的图标以及一列按钮等。

   总结: 尽管对于这几条原则而言也有一些例外,但它们反映了wpf的总体设计目标。换句话说,如果创建wpf应用程序时遵循了这些原则,将会创建出更好的、

更灵活的用户界面。如果不遵循这些原则,最终将得到不是很适合wpf的并且难以维护用户界面。

        

                  panel类的公有属性                                   
名称说明
Backgrond该属性是用于为面板背景着色的画刷。如果想接收鼠标事件,就必须将属性设置为非空值(如果想接收鼠标事件,又不希望显示固定颜色的背景,那么只需要将背景色设置为透明即可)。
Children该属性是用于在面板中存储的条目集合。这是第一个条目---换句话说,这些条目自身也可以包含更多条目
IsItemsHost该属性是一个布尔值,如果面板用于显示与ItemsControl控件关联的项(例如,TreeView控件中的节点或列表项),该属性值为true.在大多数情况下,甚至不需要知道列表控件使用后台面板管理它所包含的条目的布局。但如果希望创建自定义的列表,以不同放置子元素(例如,以平铺方式显示图像的ListBox控件),该细节就变得很重要了。

     

核心布局面板

名称说明
StackPanel在水平或垂直的堆栈中放置元素。这个布局容器常用于更大、更复杂窗口中的一些区域
WrapPanel在一系列可换行的行中放置元素,在水平向上,WraPanel面板从左向右放置条目,然后在随后的行中的放置元素。在垂直方向上,WrapPanel面板在自上而下的列中放置元素,并使用附加的列放置剩余的条目。
DockPanel根据容器的整个边界调整元素
Grid根据不可见的表格在行和列中排序元素,这是最灵活、最常见的元素之一
UniformGrid在不可见但是强制所有单元格具有相同尺寸的表中放置元素,这个布局容器不常用
Canvas使用固定坐标绝对定位元素。这个布局容器与传统Windows窗口应用程序最相似,但没有提供锚定或停靠功能。因此,对于尺寸可变的窗口,该布局容器不是合适的选择。如果选择的话,需要另外做一些工作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值