Практическое руководство. Использование сетки для автоматической разметки

В этот примере описаны способы использования сетки для автоматической разметки с целью создания локализуемого приложения.

Локализация пользовательского интерфейса может занять много времени. Часто при локализации, помимо перевода текста, необходимо изменять размеры и положение элементов. В прошлом каждый язык, который пользовательский интерфейс был адаптирован для обязательной корректировки. Теперь благодаря возможностям Windows Presentation Foundation (WPF) можно разрабатывать элементы, сокращающие потребность в коррекции. Подход к созданию приложений, в которых проще изменять размер и положение элементов, называется auto layout.

В следующем примере языка XAML демонстрируется использование сетки для размещения нескольких кнопок и текста. Обратите внимание на то, что для высоты и ширины ячейки установлено значение Auto. Таким образом, ячейка, содержащая кнопку с изображением, изменяется в соответствии с этим изображением. Так как элемент Grid может меняться в соответствии с его содержимым, он может быть полезен при использовании автоматического макета для создания локализуемых приложений.

Пример

В приведенном ниже примере показано использование сетки.

<Grid Name="grid" ShowGridLines ="false">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>

<TextBlock Margin="10, 10, 5, 5" Grid.Column="0" Grid.Row="0" FontSize="24">Grid
</TextBlock>
<TextBlock Margin="10, 10, 5, 5" Grid.Column="0" Grid.Row="1" FontSize="12"  
    Grid.ColumnSpan="2">The following buttons and text are positioned using a Grid.
</TextBlock>  
<Button Margin="10, 10, 5, 5" Grid.Column="0" Grid.Row="2" Background="Pink" 
    BorderBrush="Black" BorderThickness="10">Button 1
</Button>
<TextBlock Margin="10, 10, 5, 5" Grid.Column="1" Grid.Row="2" FontSize="12" 
   VerticalAlignment="Center" TextWrapping="WrapWithOverflow">Sets the background 
   color.
</TextBlock>  
<Button Margin="10, 10, 5, 5" Grid.Column="0" Grid.Row="3" Foreground="Red">
   Button 2
</Button>
<TextBlock Margin="10, 10, 5, 5" Grid.Column="1" Grid.Row="3" FontSize="12" 
   VerticalAlignment="Center" TextWrapping="WrapWithOverflow">Sets the foreground 
   color.
</TextBlock>  
<Button Margin="10, 10, 5, 5" Grid.Column="0" Grid.Row="4">
   <Image Source="data\flower.jpg"></Image>
</Button>
<TextBlock Margin="10, 10, 5, 5" Grid.Column="1" Grid.Row="4" FontSize="12" 
   VerticalAlignment="Center" TextWrapping="WrapWithOverflow">Adds an image as 
   the button's content.
</TextBlock>
</Grid>

На приведенном ниже рисунке показан результат выполнения примера кода.

Grid example
Сетка

См. также