14

为什么文本框不拉伸以填充堆栈面板中的空间?这是设计使然吗?在网格中,文本框按预期伸展。

4

3 回答 3

11

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

于 2009-01-02T08:24:52.447 回答
8

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

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

    • Orientation=Horizo​​ntal 表示所有元素将被垂直拉伸到最大。元素水平流动。
    • 方向=垂直意味着所有元素将被水平拉伸到最大。元素垂直流动。
  • 除非明确指定,否则子元素的宽度和高度均为 NaN。如果您指定一个明确的值,StackPanel 将在水平和垂直对齐设置上使用它们。
  • StackPanel 本身具有 Horizo​​ntalAlignment 和 VerticalAlignment,这增加了进一步的布局扭曲。您可以试验这个例子

堆栈面板

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

水平对齐

当在元素上显式设置 Height 和 Width 属性时,这些测量值在布局期间具有更高的优先级,并将取消将 Horizo​​ntalAlignment 设置为 Stretch 的典型效果。

于 2009-01-02T09:00:48.833 回答
4

我需要物品尺寸均匀,但垂直堆叠。

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

于 2009-11-02T15:57:13.027 回答