如何在更改文本内容时禁用TextBox调整大小?

时间:2013-12-09 19:20:44

标签: c# wpf textbox

我希望在我的WPF C#应用程序中有TextBox,在使用多个文本更改文本内容时,它不会自动更改其大小。

示例:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" SizeToContent="WidthAndHeight">
    <Grid>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <TextBox x:Name="textBox" Grid.Column="0">
                hello world</TextBox>
            <Button x:Name="button" Grid.Column="1" Click="button_Click">
                Add many Text
            </Button>
        </Grid>
    </Grid>
</Window>

代码背后:

private void button_Click(object sender, RoutedEventArgs e)
{
  textBox.Text = "many text many text many text many text many text many text many text many text many text many text many text many text many text many text many text";
}

使用此应用程序,主窗口的大小与SizeToContent="WidthAndHeight"的内容相符。单击按钮后,TextBox将调整自身和整个窗口的大小。

TextBox的文本发生更改时,是否可以禁用调整大小,但在用户调整窗口大小时仍保留resizable属性?

1 个答案:

答案 0 :(得分:2)

将TextBox的MaxWidth设置为您想要的值?

 <TextBox x:Name="textBox" Grid.Column="0" MinWidth="0" MaxWidth="320">
            hello world
 </TextBox>

其中maxwidth只是我的任意数字。在调整窗口大小时,这仍应调整文本框的大小。

或者你可以做这样的事情

 <TextBox x:Name="textBox" Grid.Column="0" MinWidth="0" MaxWidth="{Binding RelativeSource={RelativeSource AncestorType=Window},Path=ActualWidth}">
            hello world
 </TextBox>