Saya memiliki TextBox
kontrol di dalam StackPanel
yang Orientation
disetel ke Horizontal
, tetapi tidak bisa mendapatkan TextBox untuk mengisi ruang StackPanel yang tersisa.
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>
Dan seperti inilah tampilannya:
Mengapa TextBox itu tidak mengisi StackPanel?
Saya tahu saya dapat memiliki kontrol lebih dengan menggunakan Grid
kontrol, saya hanya bingung tentang tata letaknya.
HorizontalAlignment
. :)FlowDirection="RightToLeft"
diDockPanel
, jadi anak terakhir Anda akan menjadi yang kiri, menggunakan ruang yang tersisa.Saya akan merekomendasikan menggunakan Grid sebagai gantinya:
<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>
Cara lain untuk mengatasi masalah ini adalah dengan menumpuk label di atas, bukan di kanan. Saya perhatikan bahwa UWP memiliki properti tajuk bawaan yang dapat Anda gunakan untuk itu, tidak yakin apakah properti tajuk ada untuk WPF.
<TextBox Header="MyLabel" />
sumber
Pertanyaan lama menurut topik sebenarnya:
HorizontalAlignment="Stretch"
adalah hal yang dibutuhkan. Pastikan Anda menghapus file
width
.sumber
Saya dapat mengisi StackPanel dengan kotak teks menggunakan yang berikut ini:
<StackPanel Margin="5,5,5,5"> <Label Content = "lblExample" Width = "70" Padding="0" HorizontalAlignment="Left"/> <TextBox Name = "txtExample" Text = "Example Text" HorizontalContentAlignment="Stretch"/> </StackPanel>
Textbox Mengisi Stackpanel Secara Horizontal
sumber