TextBox应该占用可用空间,并且在填充文本时不会增长
我有一个两列两行的网格。 在第一列中,第一行我确实有这个:
<StackPanel Orientation="Vertical" HorizontalAlignment="Stretch" Grid.ColumnSpan="1" Grid.Row="0" Grid.Column="0">
<StackPanel Orientation="Horizontal" Height="25" HorizontalAlignment="Stretch">
<Label Content="Text:"/>
<TextBox Name="TB_Text" HorizontalAlignment="Stretch" MinWidth="120" />
<Button Name="BT_TextApply" Content="Apply" Width="75" HorizontalAlignment="Right" Click="BT_TextApply_Click" />
</StackPanel>
</StackPanel>
我有一个“行”(垂直StackPanel内的水平StackPanels)由一个标签,一个文本框和一个属于一个按钮组成。
StackPanels获得了属性HorizontalAlignment="Stretch"
以便它们使用Grid单元格内的完整空间,这是可以的。
但是现在我希望我的三个元素也可以填充StackPanel的完整可用空间,但我没有得到它的工作。
目前的行为
content
所需的空间,目前这还不错。 想要的行为
content
所需的空间,目前这还不错。 有没有像我的TextBox依赖StackPanel大小的“最大”属性?
谢谢stema。 我没有时间去尝试,所以我不确定这是否会起作用。
而不是一个StackPanel,你有没有尝试过使用DockPanel和最后一个孩子填充设置为true? 如果您将标签停靠在左侧并按下右侧的按钮。 然后确保文本框是dockpanel的最后一个子元素,如果HorizontalAlignment设置为伸展,我认为文本框的大小会填充剩余空间。
为了完整起见,我使用Josh的答案提出了解决方案:
<StackPanel Orientation="Vertical" HorizontalAlignment="Stretch" Grid.ColumnSpan="1" Grid.Row="0" Grid.Column="0">
<DockPanel Height="25" HorizontalAlignment="Stretch" LastChildFill="True">
<Label Content="Text:" DockPanel.Dock="Left"/>
<Button Name="BT_TextApply" Content="Apply" Width="75" DockPanel.Dock="Right" Click="BT_TextApply_Click" />
<TextBox Name="TB_Text"/>
</DockPanel>
</StackPanel>
重要的部分是: DockPanel
需要属性LastChildFill="True"
,然后列出DockPanel中应该“停靠”某处并告诉它们停靠DockPanel.Dock="Left"
和DockPanel.Dock="Right"
以及作为最后一项,放置一个应占据剩余空间的地方。 ( HorizontalAlignment="Stretch"
属性似乎不是最后一个元素所需要的,如果它存在或不存在,我不会看到差异。)
上一篇: TextBox should occupy available space and not grow when filled with text
下一篇: WPF Container: equal width for elements but with spacing between them