Prevent a TextBox from horizontal expanding in WPF Prevent a TextBox from horizontal expanding in WPF wpf wpf

Prevent a TextBox from horizontal expanding in WPF


If you don't want to hard code the width then you can go for element binding the width of the parent item.

Here I am binding TextBox MaxWidth with ScrollViewer actual width. You also have to make sure that the ColumnDefinition width should be set to "*" not to "Auto". If you set it to Auto it will neglect the ScrollViewer width and keep on expanding the width of ScrollViewer and TextBox. I think you fall in this case...

<Grid>    <Grid.ColumnDefinitions>        <ColumnDefinition Width="*"></ColumnDefinition>        <ColumnDefinition Width="*"></ColumnDefinition>    </Grid.ColumnDefinitions>    <ScrollViewer HorizontalScrollBarVisibility="Auto" Name="scv">        <TextBox Height="30" TextWrapping="Wrap" MaxWidth="{Binding ElementName=scv, Path=ActualWidth}"></TextBox>    </ScrollViewer></Grid>


You must define a MaxWidth for the TextBox, otherwise there's no limit because the ScrollViewer.


The solution provided from @bathineni helped me solve my problem. Here is what worked for me:

<Grid >    <Grid.ColumnDefinitions>    <ColumnDefinition Width="50"/>    <ColumnDefinition  Width="*"/></Grid.ColumnDefinitions>    <Button Grid.Column="0" Width="30" Height="23" Margin="10,5" Content="..."/>    <ScrollViewer  Grid.Column="1" HorizontalScrollBarVisibility="Disabled" verticalScrollBarVisibility="Disabled" Name="scv">         <TextBox Height="25" Text="Insert here long text" MaxWidth="{Binding ElementName=scv, Path=ActualWidth}" HorizontalAlignment="Stretch" />    </ScrollViewer></Grid>