#497 – Использование UniformGrid для создания группы кнопок одинакового размера

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

В примере ниже используется StackPanel для нескольких кнопок. Они одной высоты, но разной ширины.

Читать полностью »

17.02.2012

#496 – Использование StackPanel для создания группы кнопок одинакового размера

Зачастую вы хотите расположить группу кнопок в GUI по вертикали или горизонтали. Обычно используя StackPanel для этого.

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

Читать полностью »

16.02.2012

#447 – Вы можете использовать преобразования разметки с DockPanel

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

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

Читать полностью »

10.12.2011

#399 – WrapPanel изменяет разметку потомков, когда изменяются их размеры

Мы видели что WrapPanel располагает свои дочерние элементы по горизонтали, заполняя за раз по строке или по вертикале, заполняя за раз по колонке.

WrapPanel так же пересчитывает разметку своих дочерних элементов, в то время как размер самой WrapPanel изменяется. В этом случае расположение дочерних элементов изменяется.

Предположим, что у нас есть WrapPanel у которой свойство Orientation установлено в значение Horizontal. Это расположит дочерние элементы слева на право, на первой строке и начнет вторую строку как только первая заполнится.

Читать полностью »

03.10.2011

#398 – Элемент WrapPanel

Элемент WrapPanel служит контейнером для коллекции дочерних элементов, располагая свои дочерние элементы одним из двух способов:

  • В горизонтальной ориентации (по умолчанию). Дочерние элементы добавляются слева на право, пока строка не заполнится и потом переносятся на следующую строку
  • В вертикальной ориентации. Дочерние элементы добавляются сверху вниз, пока колонка не заполнится и затем переносятся на следующую колонку

Читать полностью »

30.09.2011

#388 – Разметка контейнеров не предоставляет скроллинг

Ни один из контролов панелей WPF (контейнеры) автоматически не обеспечивают прокрутку. Если их дочерние элементы не вписываются в доступное пространство, то дочерние контролы обрезаются.

В примере ниже мы у нас есть вертикальная StackPanel с серией контролов типа Label. Помните, что первая надпись не подстраивает под размер окна и прикреплена справа. Последняя надпись аналогично не подстраивается и прикреплена снизу окна.

Читать полностью »

15.09.2011

#387 – Установка цвета фона для того чтобы увидеть как работает разметка

Иногда сложно понять, как контейнер располагает свои дочерние элементы. Вы можете использовать свойство Background для каждого контрола или панели для получения лучшего представления об этих вещах.

Предположим у нас есть GUI который включает несколько элементов управления и две вложенные панели.

Читать полностью »

15.09.2011

#386 – Разметка = Панели + FrameworkElements + Alignment/Margins/Padding

Разметка в WPF это процесс, который определяет размер и позиции всех элементов пользовательского интерфейса.

Пользовательский интерфейс состоит из внешнего Window или Page которые содержат иерархию элементов пользовательского интерфейса. Иерархия может содержать личные элементы пользовательского интерфейса или панели, которые по очереди содержат коллекцию дочерних FrameworkElements.

Panel это абстрактный класс, который служит родительским для конкретных панелей разметки, включая Canvas, DockPanel, Grid, StackPanel и WrapPanel.

Читать полностью »

14.09.2011

#385 – Вы можете вкладывать панели контролов

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

В примере на самом верхнем уровне расположен трех строчный Grid, который содержит StackPanel в первой строке, 2×2 Grid во второй и другую StackPanel в третьей.

Читать полностью »

13.09.2011

#329 – Принципы Layout в WPF

WPF использует flow-based модель разметки по умолчанию, где каждый дочерний элемент расположен в контейнере и однозначно позиционируются на основе их контента. Это является противоположностью coordinate-based разметке, где контролы получают определенный размер и позицию.

Родительский контейнер (наследник Panel) ответственен за выяснение размера и позиции для всех своих дочерних элементов.

Читать полностью »

27.06.2011

#320 – Размер по умолчанию дочерних контролов StackPanel

По умолчанию StackPanel использует следующую логику для задания размеров дочерних элементов:

Если Orientation в значении вертикально:

  • Высота дочернего элемента устанавливается в соответствии с контентом
  • Ширина дочернего элемента растягивается до ширины StackPanel

Если Orientation в значении горизонтально:

  • Ширина дочернего элемента устанавливается в соответствии с контентом
  • Высота дочернего элемента растягивается до высоты StackPanel

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

Читать полностью »

14.06.2011

#180 – Как работают Layout

Размещение в WPF зависит от контейнера (такие как Grid, StackPanel) в котором размещаются дочерние элементы (такие как Button, Label). Контейнер задает конечный размер и позицию для каждого дочернего элемента, что определяет, как дочерние элементы отобразятся.

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

Читать полностью »

08.01.2011

#179 Контролы панели, которые могут содержать потомков типа UIElement

Элементы, которые действуют как контейнеры называются панелями, они наследуются от Panel. Панель может содержать один или несколько дочерних элементов, каждый является наследником UIElement.

Несколько примеров классов наследников Panel:

Читать полностью »

07.01.2011