0

以下文本框:

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

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

4

2 回答 2

0

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

TextBoxWidthProperty = double.NaN;
于 2013-11-09T06:44:30.813 回答
0

您应该设置Heightdouble.NaN( msdn ) 并使用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";      
    }
于 2013-11-09T06:45:24.007 回答