У меня есть элемент TextBox
управления, для StackPanel
которого Orientation
установлено значение Horizontal
, но я не могу заставить 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>
А это выглядит так:
Почему этот TextBox не заполняет StackPanel?
Я знаю, что могу иметь больше контроля, используя элемент Grid
управления, меня просто смущает макет.
HorizontalAlignment
. :)FlowDirection="RightToLeft"
наDockPanel
, поэтому ваш последний ребенок будет левым, используя оставшееся пространство.Я бы рекомендовал вместо этого использовать сетку:
<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"> <Grid Background="Orange"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Text="a label" VerticalAlignment="Center"/> <TextBox Grid.Column="1"/> </Grid> </Window>
Другой способ обойти эту проблему - разместить этикетку сверху, а не справа. Я заметил, что UWP имеет встроенное свойство заголовка, которое вы можете использовать для этого, не уверен, существует ли свойство заголовка для WPF.
<TextBox Header="MyLabel" />
источник
Старый вопрос по актуальной теме:
HorizontalAlignment="Stretch"
это необходимая вещь. Просто убедитесь, что вы удалили
width
.источник
Я могу заполнить StackPanel текстовым полем, используя следующее:
<StackPanel Margin="5,5,5,5"> <Label Content = "lblExample" Width = "70" Padding="0" HorizontalAlignment="Left"/> <TextBox Name = "txtExample" Text = "Example Text" HorizontalContentAlignment="Stretch"/> </StackPanel>
Текстовое поле с горизонтальным заполнением панели стека
источник