WPF - 在StackPanel中将Horizo​​ntalAlignment = Stretch设置为Textbox

时间:2009-01-02 03:04:21

标签: wpf stackpanel autosize

为什么没有文本框伸展来填充堆叠面板中的空间?这是设计的吗?在网格中,文本框按预期延伸。

3 个答案:

答案 0 :(得分:11)

是的,这是设计的。 StackPanel将分配TextBox要求的空间。如果您没有在TextBox上设置宽度,则只需要足够的宽度来适合其文字。

答案 1 :(得分:7)

肯特的回答似乎是正确的 为了仍然强制覆盖StackPanel行为,我认为你需要动态计算设置包含元素的Width属性或MeasureOverride的一些时髦覆盖。我宁愿使用另一个布局管理器/面板。我注意到的一些事情......

  • 子元素的Horizo​​ntalAlignment和VerticalAlignment属性的默认值为拉伸(如果未明确指定)。
  • StackPanel将根据其Orientation属性值拉伸元素。所以

    • Orientation = Horizo​​ntal表示所有元素将垂直拉伸到最大值。元素水平流动。
    • 方向=垂直意味着所有元素都将水平拉伸到最大值。元素垂直流动。
  • 除非明确指定,否则子元素的宽度和高度为NaN。如果指定显式值,StackPanel将通过Horiz和Vert Alignment设置来表示它们。
  • StackPanel本身具有Horizo​​ntalAlignment和VerticalAlignment,可进一步添加布局扭曲。您可以试用此example

StackPanel

  

两者的默认值都是拉伸   Horizo​​ntalAlignment和   VerticalAlignment的内容是   包含在StackPanel中。

HorizontalAlignment

  

高度和宽度属性时   显式设置元素,这些   测量采取了更高的先例   在布局期间将取消   设定的典型效果   Horizo​​ntalAlignment to Stretch。

答案 2 :(得分:4)

我需要将物品均匀分布,但垂直堆放。

我使用了UniformGrid,并将Columns属性设置为1.(使用TextBox进行测试,它会像您想要的那样伸展)