为什么没有文本框伸展来填充堆叠面板中的空间?这是设计的吗?在网格中,文本框按预期延伸.
是的,这是设计的.在StackPanel
将分配的空间TextBox
请求.如果您没有设置宽度TextBox
,则只需要足够的宽度来适合其文本.
肯特的回答似乎是正确的.
为了仍然强制覆盖StackPanel行为,我认为你需要动态计算设置包含元素的Width属性或者一些时髦的MeasureOverride覆盖.我宁愿使用另一个布局管理器/面板.我注意到的一些事情..
子元素的HorizontalAlignment和VerticalAlignment属性的默认值是Stretch(如果未明确指定).
StackPanel将根据其Orientation属性值拉伸元素.所以
Orientation = Horizontal表示所有元素将垂直拉伸到最大值.元素水平流动.
方向=垂直意味着所有元素都将水平拉伸到最大值.元素垂直流动.
除非明确指定,否则子元素的宽度和高度为NaN.如果指定显式值,StackPanel将通过Horiz和Vert Alignment设置来表示它们.
StackPanel本身具有HorizontalAlignment和VerticalAlignment,可以进一步添加布局扭曲.您可以试验这个例子.
StackPanel中
对于StackPanel中包含的内容的HorizontalAlignment和VerticalAlignment,默认值为stretch.
水平对齐
当在元素上显式设置高度和宽度属性时,这些测量在布局期间采用更高的先例,并将取消将HorizontalAlignment设置为Stretch的典型效果.