WPF UI布局(Layout)

WPF是专门用户界面技术,布局是核心功能之一。

每个布局元素都有自己的特点,要灵活使用。

WPF中布局元素有如下:

Grid:网格

可以自行定义行和列并通过行列的数量、行高和列宽来调整布局。类似Table。

Grid具有ColumnDefinitions和RowDefinitions属性,它们分别是ColumnDefinition和RowDefinition的集合,

表示Grid定义了多少行多少列。

StackPanel:栈式面板

可以将包含的元素在垂直或水平方向上排成一条直线,移除前一个元素后面一个元素会自动向前填充。

StackPanel使用3个属性来控制内部元素的布局,分别为:

Orientation(绝对内部元素横向还是纵向累积)

HorizontalAlignment(水平方向对齐方式)

VerticalAlignment(竖直方向对齐方式)

例:使用StackPanel布局的选项表

 <Grid>
        <GroupBox Header="请选择没有错别字的成语" BorderBrush="Black" Margin="5">
            <StackPanel Margin="5">
                <CheckBox Content="A.迫不及待"/>
                <CheckBox Content="A.唉声叹气"/>
                <CheckBox Content="A.不可理喻"/>
                <CheckBox Content="A.婆子敏捷"/>
                <CheckBox Content="A.迫不及待"/>
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                    <Button Content="清空" Width="60" Margin="5"/>
                    <Button Content="确认" Width="60" Margin="5"/>
                </StackPanel>
            </StackPanel>
        </GroupBox>
 </Grid>

效果:

Canvas 画布

内部元素可以以像素为单位的绝对坐标进行定位,类似于winFrom

下面例子用Canvas代替Grid设计登录界面:(窗口布局不改变,尺寸固定。不然Grid布局弹性比较好

 <Canvas>
        <TextBlock Text="用户名:" Canvas.Left="12" Canvas.Top="12"/>
        <TextBox Width="200" Canvas.Left="66" Height="23" Canvas.Top="9" BorderBrush="Black"/>
        <TextBlock Text="密码:" Canvas.Left="12" Canvas.Top="40.72" Height="16" Width="36"/>
        <TextBox Width="200" Canvas.Left="66" Height="23" Canvas.Top="38" BorderBrush="Black"/>
        <Button Content="确定" Width="80" Height="22" Canvas.Left="100" Canvas.Top="67"/>
        <Button Content="清除" Width="80" Height="22" Canvas.Left="186" Canvas.Top="67"/>
    </Canvas>

效果:

DockPanel 泊考式面板

DockPanel 内的元素会被附加上Dock属性,数据类型为Dock枚举。

Dock枚举可取Lift、Top、Right、Bottom。

DockPanel有一个重要属性bool类型的LastChildFill,默认为True。

LastChildFill为True,最后一个元素的Dock属性会被忽略。这个元素会把所有剩余空间充满。

<Grid>
        <DockPanel>
            <TextBox DockPanel.Dock="Top" Height="25" BorderBrush="Black"/>
            <TextBox DockPanel.Dock="Left" Width="120" BorderBrush="Black"/>
            <TextBox BorderBrush="Black"/>
        </DockPanel>
 </Grid>

WrapPanel 自动折行面板

内部元素排满后自动折行,类似于流式布局。

WranpPanel使用Orientation属性控制流延伸方向。

使用VerticalAlignment和HorizontalAlignment控制内部对齐方式

PS:平时使用最多的还是Grid和StackPanel。

时间: 2024-11-05 13:39:17

WPF UI布局(Layout)的相关文章

Duilib源码分析(五)UI布局—Layout

接下来,继续分析duilib之UI布局Layout,目前提供的布局有:VerticalLayout.HorizontalLayout.TileLayout.TabLayout.ChildLayout分别为垂直布局.水平布局.平铺布局.TAB布局.子窗体布局: 一般项目中用得比较多的是垂直布局.水平布局,我们将分别分析各布局: VerticalLayout:垂直布局,继承于CContainerUI容器UI类:而CContainerUI也继承于CControlUI,故VerticalLayout实际

WPF UI布局之概述

在线演示:http://v.youku.com/v_show/id_XNzA5NDk2Mjcy.html 清晰版视频+代码下载:http://115.com/lb/5lbeer0m9lad 一.简单介绍 本篇对WPF的布局控件做一个初步的概览,并分别演示Grid.StackPanel.Canvas.DockPanel和WrapPanel五个布局控件.. 主要内容包含: 1.UI布局的方式和关系. 2.WPF的布局理念. 3.五种布局控件的概述和演示. 4.小结. 二.UI布局的方式和关系 1.三

WPF——UI布局

1.规划整体布局(规划界面结构)——>这样就可以划分出若干区域(区域的控件通常是一些容器控件) 2.针对 上面的 “若干区域” ,制作每个区域的一级用户控件(然后,将该用户控件放入对应的区域中) 3.如果有需要,一级用户控件之下,还可以制作它的子用户控件(即二级用户控件),以此类推. 以上,无论针对“主界面”,还是某个模块界面,都适用. 用户控件之间的数据交互可以使用   “事件”   或  “委托” ,这个看个人的使用习惯:另外,“委托变量” 根据实际情况,可以设置为全局/静态的 “委托变量”

WPF案例 (六) 动态切换UI布局

原文:WPF案例 (六) 动态切换UI布局 这个Wpf示例对同一个界面支持以ListView或者CardView的布局方式呈现界面,使用控件ItemsControl绑定数据源,使用DataTemplate为ItemsControl分别预定义了ListView和CardView的样式,在程序运行时,可在这两种Layout之间互相切换,界面如下.源代码在这里下载   为ItemsControl定义ListView UI布局的ItemTemplate,并指定MouseOver时DataTemplate

jQuery Easy UI (适应屏幕分辨率大小)布局(Layout)

一.jQuery Easy UI (适应屏幕分辨率大小)布局(Layout) 1.首先应用的是jquery-easyui-1.4 版本(版本不同,兼容性不同) 2.实现整个页面的布局( layout: north,south,west,east, center) 3.首先整个页面布局适应屏幕的分辨率大小 4.然后内容区域进行布局,也要适应屏幕分辨率大小 5.部分代码: 1 <body> 2 <div class="easyui-layout" fit="tr

WPF笔记(2.7 文字布局)——Layout

原文:WPF笔记(2.7 文字布局)--Layout 这一节介绍的是文字布局的几个控件: 1.TextBlock      最基本的文字控件可以配置5个Font属性.TextWraping属性,"Wrap"是换行,NoWrap是不换行(原书有误,在此更正).TextBlock控件内可以放置很多控件,不光是文字. <TextBlock TextWraping="Wrap">    <Button>Split</Button>    

Android仿微信UI布局视图(圆角布局的实现)

圆角按钮,或布局可以在xml文件中实现,但也可以使用图片直接达到所需的效果,以前版本的微信就使用了这种方法. 实现效果图:    不得不说,这种做法还是比较方便的. 源代码: MainActivity(没写任何代码,效果全在布局文件中实现): package com.android_settings; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity

iOS-屏幕适配-UI布局

iOS 屏幕适配:autoResizing autoLayout和sizeClass 一.图片解说 -------------------------------------------------------------------------------------------------------------------------------------------------------------- 二.AutoLayout 1.前言 •在iOS程序中,大部分视图控制器都包含了大量

iOS8开发~UI布局(二)storyboard中autolayout和size class的使用详解

一.概要:前一篇初步的描述了size class的概念,那么实际中如何使用呢,下面两个问题是我们一定会遇到的: 1.Xcode6中增加了size class,在storyboard中如何使用? 2.auto layout该如何与size class配合来进行UI布局? 二.了解一件新事物的最好的办法就是实践,让我们揭开那神秘的面纱: 例子1.新建一个Single View Application template项目Demo1,拖拽一个newView到rootView上,并设置背景色为绿色, 然