WPF,Silverlight与XAML读书笔记第三十二 可视化效果之布局定位

说明:本系列基本上是《WPF揭秘》的读书笔记。在结构安排与文章内容上参照《WPF揭秘》的编排,对内容进行了总结并加入一些个人理解。

父面板定义了自己的独特机制,让子元素Framework可以通过附加属性或者子元素被添加到父面板的次序控制自己的位置。这些机制有如下三种:

对齐

HorizontalAlignment与VerticalAlignment属性:让一个元素自己决定如何使用父面板给他的额外空间。这两个属性分别是System.Windows下同名的两个枚举,其枚举值为:

  • HorizontalAlignment:Left,Center,Right与Stretch。
  • VerticalAlignment:Top,Center,Bottom和Stretch。

这两个属性的默认值均为Stretch。

这两个属性只有在父面板给与子元素的空间比子元素真正需要的多时,这两个属性才能发挥作用。

提示:Stretch对齐与显示设置的元素尺寸的关系

当一个元素使用Stretch(水平或者垂直)对齐时,显示设定的宽高值有较高的优先级。但是仅当:

1. 显示设定的宽高值比自然拉伸的值小时,MaxHeight与MaxWidth会有较高的优先级。

2. 显示设定的宽高值比自然拉伸大时,MinHeight与MinWidth有比较高的优先级。

当Stretch用于限制元素尺寸时,它会产生与Center对齐一样的效果。

内容对齐

HorizontalContentAlignment和VerticalContentAlignment属性,这两个属性位于Control类中,决定控件的内容怎样填满控件内部的空间。(从这个定义可以看出,对齐和内容对齐之间的关系有点像Margin与Padding之间的关系。)

    内容对齐属性HorizontalContentAlignment的类型与对齐属性HorizontalAlignment类型相同,但其默认值为Left。同样VerticalContentAlignment的类型同VerticalAlignment默认值为Top。

由于Button的样式重写了这些设置,所以其表现与默认属性的表现不同。(这个HorizontalContentAlignment与VerticalContentAlignment依赖属性的优先级参见依赖属性一节中关于优先级设置的说明。)

FlowDirection

FlowDirection属性定义于FrameworkElement中,用于改变元素的内部流的方向。这个属性可以用于控件的面板(如ItemsPanel)上,用来处理其中子元素的布局问题及子控件的对齐情况。

这个属性是System.Windows.FlowDirection的类型,有两种值LeftToRight和RightToLeft。

    这个属性主要用于当前文化的语言是从右向左读的情况,且必须显示设置这个属性来适应文化的情况,即将FlowDirection显式设置为RightToLeft。在这种情况下,像内容对齐这样的设置左与右的概念也就会互换。这个左右互换参见如下示例(如下示例加粗的属性):

XAML:

1 <StackPanel>
2     <Button FlowDirection="LeftToRight" HorizontalContentAlignment="Left">L t R</Button>
3     <Button FlowDirection="RightToLeft" HorizontalContentAlignment="Left">R t L</Button>
4 </StackPanel>

运行截图:

另外注意,FlowDirection不会改变字母的前后顺序。

本文完

参考:

《WPF揭秘》

原文地址:https://www.cnblogs.com/lsxqw2004/p/4629158.html