2013-11-09 6 views
0

Следующая TextBox:Как установить TextBox Height на "неуказанный"?

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

высок 40 пикселей и не меняет размер, когда содержание расти. Простое удаление свойства Height из вышеперечисленного XAML добавляет эту возможность. Теперь мне нужно «удалить» это свойство программно, т. Е. Мой TextBox по умолчанию имеет высоту 40 пикселей, но когда нажата конкретная кнопка, мне нужно, чтобы TextBox расширялся, чтобы соответствовать всему его содержимому. Как удалить свойство Height? Я попытался установить его на нуль, но это не сработает.

ответ

0

Вы должны установить Height в double.NaN (msdn) и использовать Grid управления.

В дополнение к приемлемым Двойным значениям, это свойство также может быть Double.NaN. Именно так вы определяете поведение авторазмера в коде. В XAML вы устанавливаете значение в строку «Авто» (без учета регистра) на , чтобы включить автоматическое определение размера. Автоматическое определение размера означает, что элемент заполнит доступную ему высоту. Обратите внимание, однако, что определенные элементы управления часто предоставляют значения по умолчанию через свои стили темы по умолчанию , которые будут отключать поведение автоматического определения размера, если только он специально не включен.

Пример:

<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";  
    } 
+0

'' полна благодарности. :) – dotNET

0

Вы можете использовать Double.NaN, это будет установить высоту, эквивалентную Auto

TextBoxWidthProperty = double.NaN; 
Смежные вопросы