2010-10-20 2 views
1

В следующем примере есть два ряда Grid с высотой 6* и 4*. Проблема в том, что только после того, как пользователь изменит размер окна, вычисляется правильная высота строк. Это происходит только тогда, когда установлен флаг SizeToContent.
Любые идеи, почему? Как заставить окно автоматически вычислять высоту при ее загрузке?Wpf Высота рядов сетки не вычисляется правильно с помощью SizeToContent

<Window x:Class="TestGridRow.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" SizeToContent="Height"> 
<Grid x:Name="grid"> 
    <Grid.RowDefinitions> 
     <RowDefinition x:Name="row0" Height="6*"/> 
     <RowDefinition x:Name="row1" Height="4*"/> 
    </Grid.RowDefinitions> 
    <TextBox Grid.Row="0" x:Name="textBox" TextWrapping="Wrap" 
      HorizontalScrollBarVisibility="Auto" IsReadOnly="True" xml:space="preserve"> 
     Hallo 
     Hallo 
     Hallo 
     </TextBox> 
    <TextBlock Background="Red" Grid.Row="1"/> 
</Grid> 

+0

3,5 или 4? Я думаю, что есть некоторые проблемы с вычислением размера сетки и строки в 4. – Will

+0

В основном 2010/4, но то же самое происходит и в 2008/3.5. – Elad

+0

В конструкторе для класса вы можете установить параметр SizeToContent после рендеринга с помощью Диспетчера. – Rachel

ответ

0

Возможно, вы должны просто установить SizeToContent на номер Manual в событии Window.Loaded. Это позволит структуре определить правильный размер окна, а затем заставить строки правильно подсчитать высоту.

private void Window_Loaded (object sender , RoutedEventArgs e) 
{ 
    SizeToContent = SizeToContent.Manual; 
} 
0

Дайте сетке значение для высоты или MinHeight:

<Grid x:Name="grid" MinHeight="100"> 
    ... 
</Grid> 

Это не ошибка: вы устанавливаете строки, чтобы быть 60%/40% от высоты окна, но также установите для окна размер своих дочерних элементов (SizeToContent="Height").

Смежные вопросы