I have the following window with some input textboxes
. But these textboxes will not expand to fill the remaining space of the second column. Furthermore when the window resizes the textboxes
doesn't resize accordingly,
Here is my window
Here is my XAML markup
<Window x:Class="WpfApplication8.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid ShowGridLines="True"> <Grid.ColumnDefinitions> <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="28"></RowDefinition> </Grid.RowDefinitions> <Label Content="First Name" Grid.Column="0" Grid.Row="0"></Label> <Label Content="Last Name" Grid.Column="0" Grid.Row="1"></Label> <Label Content="Street Name" Grid.Column="0" Grid.Row="2"></Label> <Label Content="Suburb" Grid.Column="0" Grid.Row="3"></Label> <Label Content="City" Grid.Column="0" Grid.Row="4"></Label> <TextBox Width="313" Grid.Column="1" Margin="3" HorizontalAlignment="Left"/> <TextBox Width="313" Grid.Column="1" Grid.Row="1" Margin="3" HorizontalAlignment="Left" ></TextBox> <TextBox Width="313" Grid.Column="1" Grid.Row="2" Margin="3" HorizontalAlignment="Left"></TextBox> <TextBox Width="313" Grid.Column="1" Grid.Row="3" Margin="3" HorizontalAlignment="Left"></TextBox> <TextBox Width="313" Grid.Column="1" Grid.Row="4" Margin="3" HorizontalAlignment="Left"></TextBox> <StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="5" HorizontalAlignment="Right"> <Button Content="Save" Grid.Column="1" Grid.Row="5" Width="100" Margin="3" /> <Button Content="Exit" Grid.Column="1" Grid.Row="5" Width="100" HorizontalAlignment="Right" Margin="3"></Button> </StackPanel> <!--<TextBox Width="313" Grid.Column="1"></TextBox>--> </Grid> </Window>
textboxes
to fill the remaining space in the second column?textboxes
resize with the form resize?A StackPanel allows you to stack elements in a specified direction. By using properties that are defined on StackPanel, content can flow both vertically, which is the default setting, or horizontally.
User Interface Panels. There are six panel classes available in UI scenarios: Canvas, DockPanel, Grid, StackPanel, VirtualizingStackPanel, and WrapPanel.
You have the Width hardcoded, so it is always going to stay the same. Remove it, and change the alignment to stretch
<TextBox Grid.Column="1" Margin="3" HorizontalAlignment="Stretch">
Just a note, if somebody facing with the same problem:
For me the problem was that I use the SharedSizeGroup on the grid for both of my 2 columns. If i deleted the sharedsizegroup="b" on the columns what is *, the problem solved.
<StackPanel Orientation="Vertical" Grid.IsSharedSizeScope="True"> <Grid Margin="0 10"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" SharedSizeGroup="a" /> <ColumnDefinition Width="*" **SharedSizeGroup="b"**/> </Grid.ColumnDefinitions> <TextBlock Text="Size (m): " /> <TextBox x:Name="RealObjSize" Grid.Column="1" MinWidth="50" HorizontalAlignment="Stretch" TextChanged="RealObjSize_OnTextChanged" /> </Grid> <Grid Margin="0 10"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" SharedSizeGroup="a" /> <ColumnDefinition Width="*" **SharedSizeGroup="b"**/> </Grid.ColumnDefinitions> <TextBlock Text="Distance (m): " /> <TextBox x:Name="RealObjDist" Grid.Column="1" MinWidth="50" HorizontalAlignment="Stretch" TextChanged="RealObjDist_OnTextChanged" /> </Grid> </StackPanel>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With