1. StackPanel是以堆叠的方式来显示控件(从左到右,或者从上到下)

默认是从上到下显示的,并且宽度为StackPanel的宽度,高度自动适应控件中内容的高度(未对控件进行设置时)

如图:

代码如下:

 <Window x:Class="ReadRemoteRegistry.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="" Width="">
<Grid>
<StackPanel>
<Button Content="第一个按钮" Click="Button_Click"/>
<Button Content="第二个按钮" Click="Button_Click_1"/>
<Button Content="第三个按钮" Click="Button_Click_2"/>
</StackPanel>
<Button Content="Button" HorizontalAlignment="Left" Margin="220,199,0,0" VerticalAlignment="Top" Width="" Height="" Click="Button_Click_3"/> </Grid>
</Window>

2.可以通过 Orientation [orɪɛn'teʃən] n.方向 属性来设置布局的样式(水平还是垂直,即上面说的从左到右,或从上到下)

Orientation属性的可选值有:Horizontal 水平、 Vertical 垂直(默认),如图:

代码如下:高度为StackPanel的高度,宽度自动适应控件中内容的宽度

 <Window x:Class="ReadRemoteRegistry.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="" Width="">
<Grid>
<StackPanel Orientation="Horizontal">
<Button Content="第一个按钮" Click="Button_Click"/>
<Button Content="第二个按钮" Click="Button_Click_1"/>
<Button Content="第三个按钮" Click="Button_Click_2"/>
</StackPanel>
<Button Content="Button" HorizontalAlignment="Left" Margin="220,199,0,0" VerticalAlignment="Top" Width="" Height="" Click="Button_Click_3"/> </Grid>
</Window>

3.控制StackPanel内控件的属性和状态

3.1. 内部控件的 Width 和 Height

如果未对内部的控制设置这两个属性,就会出现上述的:

垂直布局时(从上到下):宽度为StackPanel的宽,高度自动适应控件中内容的高度;

水平布局时(从左到右):高度为StackPanel的高,宽度自动适应控件中内容的宽度;

3.2. Margin属性,控制内部控件的外边距

3.2.1. Margin=”10”:各边距均为10;

3.2.2.Margin=”10,20,30,40”:设定左、上、右、下各边缘分别为10、20、30、40

3.2.3.使用拆分式方式设定(使用复杂属性),如上下为10,左右为20

<Button Content="Button A">
                            <Button.Margin>
                                    <Thickness Top="10" Bottom="10" Left="20" Right="20" />
                            </Button.Margin>
                    </Button>

3.3. 设置内部控件的对齐方式

3.3.1. HorizontalAlignment、(需要在整体Orientation="Vertical"的前提下)
                            设定控件的竖直对齐方式,如,设置水平对齐为Left、Right或Center

3.3.2. VerticalAlignment属性(需要在整体Orientation="Horizontal"的前提下)

设定控件的水平对齐方式,设置水平对齐为Top、Center、Stretch或Bottom

3.4. 设置内部控件的动态值

MinWidth: 允许的最小宽度

MinHeight: 允许的最小高度

MaxWidth:随控件变化时,允许的最大宽度

MaxHeight:随控件变化时,允许的最大高度

4.使用StackPanel可以让控制随内容变化而自适应

如下图:“OK"和"Cancel“按钮的对话框,因为按钮上的文字可能因字体的改变而发生大小改变,

我们应该避免固定按钮大小的写法(即不要设置控件Width的值,而是使用MinWidth此类属性)。

StackPanel会自动根据面板的大小的自动调整内部控件的大小。

我们就不用为按钮太大或太小而烦恼了。

   <StackPanel Margin="8" Orientation="Horizontal">
<Button MinWidth="93">OK</Button>
<Button MinWidth="93" Margin="10,0,0,0">Cancel</Button>
</StackPanel>

参考:http://blog.sina.com.cn/s/blog_6c81891701017a34.html

WPF的布局--StackPanel的更多相关文章

  1. WPF面板布局介绍Grid、StackPanel、DockPanel、WrapPanel

    回顾 上一篇,我们介绍了基本控件及控件的重要属性和用法,我们本篇详细介绍WPF中的几种布局容器及每种布局容器的使用场景,当 然这些都是本人在实际项目中的使用经验,可能还存在错误之处,还请大家指出. 本 ...

  2. ( 转)WPF面板布局介绍Grid、StackPanel、DockPanel、WrapPanel

    回顾 上一篇,我们介绍了基本控件及控件的重要属性和用法,我们本篇详细介绍WPF中的几种布局容器及每种布局容器的使用场景,当 然这些都是本人在实际项目中的使用经验,可能还存在错误之处,还请大家指出. 本 ...

  3. WPF简单布局 浅尝辄止

            WPF的窗口只能包含一个元素,为了在WPF窗口中放置多个元素并创建更实用的用户界面,需要在窗口上放置一个容器,然后在容器中放置其它元素. 注意:造成这一限制的原因是window类继承自 ...

  4. WPF UI布局之概述

    在线演示:http://v.youku.com/v_show/id_XNzA5NDk2Mjcy.html 清晰版视频+代码下载:http://115.com/lb/5lbeer0m9lad 一.简单介 ...

  5. WPF中的StackPanel、WrapPanel、DockPanel

    一.StackPanel StackPanel是以堆叠的方式显示其中的控件 1.可以使用Orientation属性更改堆叠的顺序 Orientation="Vertical" 默认 ...

  6. WPF(布局)

      WPF编程学习——布局   本文目录 1.布局简介 2.面板(Panel) 3.视图框(Viewbox) 4.滚动视图控件(ScrollViewer) 5.公共布局属性 1.布局简介 应用程序界面 ...

  7. WPF常用布局介绍

    概述:本文简要介绍了WPF中布局常用控件及布局相关的属性 1 Canvas Canvas是一个类似于坐标系的面板,所有的元素通过设置坐标来决定其在坐标系中的位置..具体表现为使用Left.Top.Ri ...

  8. WPF中的StackPanel、WrapPanel、DockPanel(转)

    一.StackPanel StackPanel是以堆叠的方式显示其中的控件 1.可以使用Orientation属性更改堆叠的顺序 Orientation="Vertical" 默认 ...

  9. WPF 等距布局

    原文:WPF 等距布局 本文告诉大家如何使用 WPF 的自定义布局做等距布局. 实际做的效果很简单,因为在开发我容易就用到了等距的控件.等距控件就是在指定的宽度下,平均把控件放在水平的地方,这样相等于 ...

随机推荐

  1. C# 字符,字符串和文本处理。

    1. 字符: 在.net中 字符是表示成16为Unicode代码值.每个字符都是System.Char结构(一个值类型)的实例. public class StringTempte { public ...

  2. JAVA IO总结及socket简单实现

    为了方便理解与阐述,先引入两张图: a.Java IO中常用的类 在整个Java.io包中最重要的就是5个类和一个接口.5个类指的是File.OutputStream.InputStream.Writ ...

  3. wp8.1 app退出操作提示

    微软的wp8.1 sdk相比之前wp8 sdk以及相关dll类库,微软又重新编译过,相关系统类库也经过精简,删改了部分传统dll库中的方法对象,很多常用方法对象被写进Windows.UI为前缀的命名空 ...

  4. TSQL--SORT MERGE JOIN

    算法:对两表排序,然后对两表依次扫描,找到符合条件的结果集 sort(T1); seort(T2); int k=0;--for T1 index int m=0;--for T2 index whi ...

  5. 不得不说fdm真的好用

    记忆力太差系列 挺好用的软件 下载器FDM真的很好用

  6. kvm虚拟机时间配置

    注:在虚拟化环境中,虚拟机在长时间运行过程中,时间会变慢,通常的作法是配置ntpdate定时与时间服务器进行时间同步的计划任务. KVM虚拟机默认采用utc时间,需要专门修改,以及考虑kvm时间同步问 ...

  7. kali linux之免杀技术

    恶意软件: 病毒,木马.蠕虫,键盘记录,僵尸程序,流氓软件,勒索软件,广告程序 在用户非自愿的情况下安装 出于某种恶意的目的:控制,窃取,勒索,偷窥,推送,攻击 恶意程序最主要的防护手段:杀软 检测原 ...

  8. UIView之setNeedsDisplay与drawRect 和 setNeedsLayout与layoutSubViews

    1.UIView的setNeedsDisplay和setNeedsLayout方法 首先两个方法都是异步执行的.而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到  UI ...

  9. rejected –non-fast-forward解决方法

    Eclipse 是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境.幸运的是,Eclipse 附带了一个标准的插件集,包括Java开 ...

  10. Hibernate 初识

    第一步: 导包:(这是我根据其他网站的介绍导入的包,可能不完善,但开发没什么问题,遇到问题再说) 当然还有mysql的jar包 第二步:进行hibernate环境配置 在classpath目录下建立h ...