How to configure wpf text box to automatically resize when user resize dialog box?

How to configure wpf text box to automatically resize when user resize dialog box?

<Window x:Class="MemoPad.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Background="LightGray" Title="Window1" Height="350" Width="700" > <StackPanel Orientation="Vertical"> <Menu DockPanel.Dock ="Right"> <MenuItem Header="Find" x:Name="gMNuFind" /> </Menu> <Button Content=" Find " Margin="5,10,5,5" x:Name="gBuFind" /> <TextBox Margin="0,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" MinHeight="270" MinWidth="690" x:Name = "gTBxInfo" TextWrapping="Wrap" AcceptsReturn="True" ScrollViewer.VerticalScrollBarVisibility="Auto" /> </StackPanel> 

+6
source share
2 answers

Or change StackPanel to grid

 <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Background="LightGray" Title="Window1" Height="350" Width="700" > <Grid> <Grid.RowDefinitions> <RowDefinition Height="auto" /> <RowDefinition Height="auto" /> <RowDefinition Height="1*" /> </Grid.RowDefinitions> <Menu> <MenuItem Header="Find" x:Name="gMNuFind" /> </Menu> <Button Grid.Row="1" Content=" Find " Margin="5,10,5,5" x:Name="gBuFind" /> <TextBox Grid.Row="2" Margin="0,0,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MinHeight="270" MinWidth="690" x:Name = "gTBxInfo" TextWrapping="Wrap" AcceptsReturn="True" ScrollViewer.VerticalScrollBarVisibility="Auto" /> </Grid> </Window> 
+3
source

Remove MinHeight and MinWidth from TextBox and change HorizonalAlignment to Stretch

 <TextBox Margin="0,0,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Top" x:Name = "gTBxInfo" TextWrapping="Wrap" AcceptsReturn="True" ScrollViewer.VerticalScrollBarVisibility="Auto" /> 

Edit:

If you want to resize the TextBox in both directions (horizontal and vertical), you will have to use a different container than the StackPanel , so the size of the TextBox is independent.

Something like that:

 <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="50"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Menu> <MenuItem Header="Find" x:Name="gMNuFind" Grid.Row="0"/> </Menu> <Button x:Name="gBuFind" Content=" Find " Margin="5,10,5,5" Grid.Row="1"/> <TextBox x:Name = "gTBxInfo" Margin="0,0,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" TextWrapping="Wrap" AcceptsReturn="True" ScrollViewer.VerticalScrollBarVisibility="Auto" Grid.Row="2"/> </Grid> 
+3
source

Source: https://habr.com/ru/post/981312/


All Articles