如何将TextBox高度设置为“未指定”?

时间:2013-11-09 06:29:53

标签: .net wpf xaml textbox

以下TextBox:

<TextBlock Text="A really long sentence" TextTrimming="WordEllipsis" 
           TextWrapping="WrapWithOverflow" Height= "40" />

高40像素,内容增长时不会调整大小。只需从上面的XAML中删除Height属性即可添加此功能。现在我需要以编程方式“删除”此属性,即默认情况下我的TextBox高度为40像素,但是当单击某个特定按钮时,我需要展开TextBox以适应其所有内容。如何删除高度属性?我尝试将其设置为null,但这不起作用。

2 个答案:

答案 0 :(得分:0)

您可以使用Double.NaN,这会将高度设置为相当于Auto

TextBoxWidthProperty = double.NaN;

答案 1 :(得分:0)

您应该将Height设置为double.NaNmsdn)并使用Grid控件。

  

除了可接受的Double值之外,此属性也可以   Double.NaN。这是您在代码中指定自动调整大小行为的方式。在   XAML您将值设置为字符串“Auto”(不区分大小写)   启用自动调整大小的行为。自动调整大小的行为意味着   元素将填充可用的高度。但请注意   特定控件经常通过它们提供默认值   默认主题样式将禁用自动调整大小行为,除非   它是专门重新启用的。

示例:

<Grid Background="Red">
    <Grid.RowDefinitions>
        <RowDefinition Height="30" />
        <RowDefinition MinHeight="40" Height="Auto" />
    </Grid.RowDefinitions>
    <Button Content="Expand" Click="Button_Click_2" />
    <TextBlock x:Name="tbSentence" Text="A really long sentence" TextTrimming="WordEllipsis" 
            TextWrapping="WrapWithOverflow" Height= "40" Background="Orange" Grid.Row="1" />
</Grid>

代码背后:

private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        tbSentence.Height = double.NaN;
        tbSentence.Text = @"A really long sentence
A really long sentence
A really long sentence";      
    }