Mam TextBox
formant w ramach, StackPanel
którego Orientation
jest ustawiona na Horizontal
, ale nie mogę uzyskać TextBox, aby wypełnić pozostałą przestrzeń 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>
A tak to wygląda:
Dlaczego ten TextBox nie wypełnia StackPanel?
Wiem, że mogę mieć większą kontrolę, używając Grid
kontrolki, jestem po prostu zdezorientowany co do układu.
HorizontalAlignment
. :)FlowDirection="RightToLeft"
naDockPanel
, więc Twoje ostatnie dziecko będzie lewe, wykorzystując pozostałą przestrzeń.Poleciłbym zamiast tego użyć siatki:
<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>
Innym sposobem obejścia tego problemu jest ułożenie etykiety na górze zamiast po prawej stronie. Zauważyłem, że UWP ma wbudowaną właściwość nagłówka, której możesz użyć do tego, nie jestem pewien, czy właściwość nagłówka istnieje dla WPF.
<TextBox Header="MyLabel" />
źródło
Stare pytanie według aktualnego tematu:
HorizontalAlignment="Stretch"
jest wymagana. Tylko pamiętaj, aby usunąć plik
width
.źródło
Jestem w stanie wypełnić StackPanel polem tekstowym, korzystając z:
<StackPanel Margin="5,5,5,5"> <Label Content = "lblExample" Width = "70" Padding="0" HorizontalAlignment="Left"/> <TextBox Name = "txtExample" Text = "Example Text" HorizontalContentAlignment="Stretch"/> </StackPanel>
Stackpanel wypełniający poziomo pole tekstowe
źródło