WPF文本框不会填写StackPanel

我有一个在其Orientation设置为HorizontalStackPanel内的TextBox控件,但无法获取文本框来填充剩余的StackPanel空间。

XAML:

 <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="180" Width="324"> <StackPanel Background="Orange" Orientation="Horizontal" > <TextBlock Text="a label" Margin="5" VerticalAlignment="Center"/> <TextBox Height="25" HorizontalAlignment="Stretch" Width="Auto"/> </StackPanel> </Window> 

这就是它的样子:

替代文字

为什么该文本框不填写StackPanel?

我知道我可以通过使用Grid控制更多的控制,我只是混淆了布局。

我已经有了与StackPanel相同的问题,行为是“按devise”。 StackPanel是为了在可见区域之外“堆叠”东西,所以它不允许你填充堆栈维度中的剩余空间。

您可以使用LastChildFill设置为trueDockPanelLastChildFill所有非填充控件停靠在Left以模拟所需的效果。

 <DockPanel Background="Orange" LastChildFill="True"> <TextBlock Text="a label" Margin="5" DockPanel.Dock="Left" VerticalAlignment="Center"/> <TextBox Height="25" Width="Auto"/> </DockPanel >