Поделиться через


Макет с абсолютным и динамическим положением

Обновлен: Ноябрь 2007

При создании окна в приложении необходимо решить, как будет осуществляться размещение элементов управления в этом окне. Также необходимо решить, как будут вести себя элементы управления в окне при изменении пользователем размеров окна. Далее перечислены проблемы, возникающие при абсолютном и динамическом позиционировании.

При создании окна в приложении задается его размер и размер элементов управления в этом окне. Необходимо решить, как будут вести себя окно и элементы управления при изменении их содержимого. Например, при добавлении в окно элемента управления «подпись» можно указать поведение подписи в случае перевода ее текста на другой язык. Далее приведены проблемы, связанные с динамическим изменением размера.

Типы макетов

Ниже приведены три типа макетов, которые можно создавать в Windows Presentation Foundation (WPF) для Visual Studio (конструктор):

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

Bb514707.alert_note(ru-ru,VS.90).gifПримечание.

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

Панели

WPF предоставляет множество элементов управления Panel, поддерживающих абсолютное и динамическое позиционирование. Элементы управления «панель» могут быть объединены путем добавления одного элемента управления «панель» как дочернего элемента другого. Для размещения элементов в приложениях можно использовать следующие элементы управления «панель»:

Панель

Тип макета

Описание

Grid

Динамический

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

DockPanel

Динамический

Определяет область, где можно упорядочить и расположить дочерние элементы вдоль верхнего, нижнего, левого или правого краев.

WrapPanel

Динамический

Автоматически последовательно располагает дочерние элементы, перемещая содержимое на следующую строку на границе родительского контейнера. Упорядочение происходит последовательно сверху вниз или слева направо, в зависимости от того, какая ориентация установлена: по горизонтали или по вертикали.

StackPanel

Динамический

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

UniformGrid

Динамический

Автоматически упорядочивает дочерние элементы в строках и столбцах. Строки и столбцы расположены равномерно. Если элемент не помещается в ячейку, то производится его усечение.

Canvas

Абсолютный

Определяет область, в которой можно разместить дочерние элементы явным образом с помощью координат.

Элементы управления

WPF предоставляет элементы управления, поддерживающие динамическое позиционирование, управляемое данными. Эти элементы управления могут быть привязаны к данным и автоматически изменять размер в соответствии с размером данных. Для динамического отображения данных в приложениях можно использовать следующие элементы управления:

Элемент управления

Тип макета

Описание

ListView

Динамический, управляемый данными

Отображает список элементов данных.

GridView

Динамический, управляемый данными

Отображает элементы данных в столбцах для элемента управления «список».

Динамическое изменение размера

При динамическом изменении размера элементы управления настраиваются таким образом, что они автоматически расширяются или сжимаются в соответствии с содержимым. Например, если размер элемента управления «подпись» устанавливается в соответствии с текстом на одном языке, а текст переводится на другой язык, то можно настроить подпись для автоматического изменения размера по размеру нового текста. Динамическое позиционирование поддерживает динамическое изменение размеров путем автоматической настройки положения элементов управления при изменении их размеров.

Ниже перечислены свойства, которые можно задать при создании динамических макетов.

Свойство

Значения

Применение

Примечания

Width

double, Auto, *

Окна, элементы управления, столбцы сетки.

Для максимальной гибкости используйте значения размера «Auto» и «*». Дополнительные сведения см. в следующем разделе. Значение «*» применяется только к столбцам сетки.

Height

double, Auto, *

Окна, элементы управления, строки сетки.

Для максимальной гибкости используйте значения размера «Auto» и «*». Дополнительные сведения см. в следующем разделе. Значение «*» применяется только к строкам сетки.

MinWidth

double

Окна, элементы управления, столбцы сетки.

Для максимальной гибкости установите значение «0».

MinHeight

double

Окна, элементы управления, строки сетки.

Для максимальной гибкости установите значение «0».

MaxWidth

double, Infinity

Окна, элементы управления, столбцы сетки.

Для максимальной гибкости задайте значение «Infinity».

MaxHeight

double, Infinity

Окна, элементы управления, строки сетки.

Для максимальной гибкости задайте значение «Infinity».

ResizeMode

NoResize

CanMinimize

CanResize

CanResizeWithGrip

Окна

Для максимальной гибкости установите значение CanResize. Это позволит пользователю изменять размер окна.

SizeToContent

Manual

Width

Height

WidthAndHeight

Окна

Для максимальной гибкости установите значение WidthAndHeight. Это позволит окну автоматически изменять размер при расширении его содержимого.

Значения размера «AUTO» и «*»

Автоматическое изменение размеров используется для соответствия размеров элементов управления их содержимому, даже если размер содержимого изменяется. Значение размера «*» используется для пропорционального распределения доступного места среди строк и столбцов сетки. В языке XAML значения «звездочка» выражаются в виде «*» (или «n*»). Например, при наличии таблицы с 4 столбцами ширину столбцов можно задать следующим образом:

Столбец 1

Auto

Размер столбца будет изменяться в соответствии с размером содержимого.

Столбец 2

*

После вычисления столбцов со значением «Auto» столбец получает часть оставшейся ширины. Столбец 2 будет вдвое уже, чем столбец 4.

Столбец 3

Auto

Размер столбца будет изменяться в соответствии с размером содержимого.

Столбец 4

2*

После вычисления столбцов со значением «Auto» столбец получает часть оставшейся ширины. Столбец 4 будет вдвое шире, чем столбец 2.

Дополнительные сведения см. в разделе Star.

См. также

Основные понятия

Выравнивание в конструкторе WPF

Система макета

Общие сведения о конструкторе WPF

Другие ресурсы

Примеры создания макетов