为什么文本框不拉伸以填充堆栈面板中的空间?这是设计使然吗?在网格中,文本框按预期伸展。
Malcolm
问问题
16852 次
3 回答
11
是的,这是设计使然。将StackPanel
分配所TextBox
要求的空间。如果您没有在 上设置宽度TextBox
,则它只需要足够的宽度来适应其文本。
于 2009-01-02T08:24:52.447 回答
8
肯特的回答似乎是对的。
为了仍然强制覆盖 StackPanel 行为,我认为您需要动态计算设置包含元素的 Width 属性或一些时髦的MeasureOverride覆盖。我宁愿使用另一个布局管理器/面板。我注意到的一些事情..
- 子元素的 HorizontalAlignment 和 VerticalAlignment 属性的默认值为Stretch(如果您没有明确指定)。
StackPanel 将根据其 Orientation 属性值拉伸元素。所以
- Orientation=Horizontal 表示所有元素将被垂直拉伸到最大。元素水平流动。
- 方向=垂直意味着所有元素将被水平拉伸到最大。元素垂直流动。
- 除非明确指定,否则子元素的宽度和高度均为 NaN。如果您指定一个明确的值,StackPanel 将在水平和垂直对齐设置上使用它们。
- StackPanel 本身具有 HorizontalAlignment 和 VerticalAlignment,这增加了进一步的布局扭曲。您可以试验这个例子。
StackPanel 中包含的内容的 HorizontalAlignment 和 VerticalAlignment 的默认值是拉伸。
当在元素上显式设置 Height 和 Width 属性时,这些测量值在布局期间具有更高的优先级,并将取消将 HorizontalAlignment 设置为 Stretch 的典型效果。
于 2009-01-02T09:00:48.833 回答
4
我需要物品尺寸均匀,但垂直堆叠。
我使用了 UniformGrid,并将 Columns 属性设置为 1。(使用 TextBox 进行测试,它可以像你想要的那样伸展)
于 2009-11-02T15:57:13.027 回答