FlowContainer
Раскладка с переносом на новые строки или колонки.
FlowContainer переносит подходящие прямые дочерние Control по доступной длине: горизонтальный режим создаёт строки, вертикальный — колонки. Это отличается от GridContainer с фиксированным числом столбцов. У базового FlowContainer ось изменяема; HFlowContainer/VFlowContainer фиксируют её и отклоняют SetVertical.
На перенос влияют доступный размер, desired/minimum/maximum детей, SizeFlags и theme-константы h_separation/v_separation. Размеры строк/колонок могут различаться. Обычная Entity-посредник, TopLevel и скрытый Control не становятся обычными элементами раскладки. Ручной Position ребёнка заменяется контейнером.
Alignment задаёт положение свободного места в линии. LastWrapAlignment отдельно выравнивает последнюю неполную линию относительно предыдущей, если это не первая линия; Inherit использует основное выравнивание. Например, при ширине 45 и двух элементах по 20 в предыдущей строке End ставит последний элемент шириной 20 в X = 20, а не 25. Пример предполагает LTR и нулевые промежутки.
ReverseFill меняет направление заполнения поперёк основного потока: горизонтальные строки могут идти снизу вверх, вертикальные колонки — с противоположного края с учётом RTL. Порядок детей в дереве от этого не меняется.
GetLineCount читает кэш предыдущей раскладки: после resize дождитесь сортировки. В HFlow это число строк, в VFlow — колонок. Это не число детей и не надёжная проверка пустоты: у пустого видимого контейнера после прохода может быть одна пустая линия; скрытый контейнер может сохранять старый кэш.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
FlowContainerКонструктор
public FlowContainer();Создаёт изменяемый горизонтальный Flow: Alignment = Begin, LastWrapAlignment = Inherit, ReverseFill = false. Перенос появится при ограниченной доступной длине.
Свойства4
AlignmentСвойство
public FlowContainer.AlignmentMode Alignment { get; set; }Основное Begin/Center/End-выравнивание свободного места линии, Begin по умолчанию. Не равно выравниванию отдельного Control и не фиксирует число элементов.
LastWrapAlignmentСвойство
public FlowContainer.LastWrapAlignmentMode LastWrapAlignment { get; set; }Выравнивание последней неполной линии относительно предыдущей, если это не первая линия. Inherit использует Alignment. Не следует считать End безусловным правым/нижним краем всего контейнера.
ReverseFillСвойство
public bool ReverseFill { get; set; }Меняет направление заполнения строк/колонок поперёк основной оси, false по умолчанию. Не переставляет детей в дереве; поведение по горизонтали учитывает RTL.
VerticalСвойство
public bool Vertical { get; set; }false для строк, true для колонок. Меняется только у базового FlowContainer. Любой вызов setter у HFlowContainer/VFlowContainer отклоняется.
Методы9
GetAlignmentFlowContainer.AlignmentMode
public FlowContainer.AlignmentMode GetAlignment();Основное Begin/Center/End-выравнивание свободного места линии, Begin по умолчанию. Не равно выравниванию отдельного Control и не фиксирует число элементов.
FlowContainer.AlignmentModeТекущее значение настройки; не результат полной раскладки.
GetLastWrapAlignmentFlowContainer.LastWrapAlignmentMode
public FlowContainer.LastWrapAlignmentMode GetLastWrapAlignment();Выравнивание последней неполной линии относительно предыдущей, если это не первая линия. Inherit использует Alignment. Не следует считать End безусловным правым/нижним краем всего контейнера.
FlowContainer.LastWrapAlignmentModeТекущее значение настройки; не результат полной раскладки.
GetLineCountint
public int GetLineCount();Возвращает кэш числа линий последней раскладки: строки по горизонтали, колонки по вертикали. Может быть устаревшим после resize/скрытия; у пустого контейнера после прохода возможно 1. Не используйте как число детей.
intКэшированное число линий, не гарантированное текущее число элементов/строк на экране.
IsReverseFillbool
public bool IsReverseFill();Меняет направление заполнения строк/колонок поперёк основной оси, false по умолчанию. Не переставляет детей в дереве; поведение по горизонтали учитывает RTL.
boolТекущее значение настройки; не результат полной раскладки.
IsVerticalbool
public bool IsVertical();false для строк, true для колонок. Меняется только у базового FlowContainer. Любой вызов setter у HFlowContainer/VFlowContainer отклоняется.
boolТекущее значение настройки; не результат полной раскладки.
SetAlignmentvoid
public void SetAlignment(FlowContainer.AlignmentMode alignment);Основное Begin/Center/End-выравнивание свободного места линии, Begin по умолчанию. Не равно выравниванию отдельного Control и не фиксирует число элементов.
| Имя | Тип | По умолчанию |
|---|---|---|
alignment | FlowContainer.AlignmentMode | — |
alignmentBegin, Center или End с учётом направления потока и RTL.
SetLastWrapAlignmentvoid
public void SetLastWrapAlignment(FlowContainer.LastWrapAlignmentMode lastWrapAlignment);Выравнивание последней неполной линии относительно предыдущей, если это не первая линия. Inherit использует Alignment. Не следует считать End безусловным правым/нижним краем всего контейнера.
| Имя | Тип | По умолчанию |
|---|---|---|
lastWrapAlignment | FlowContainer.LastWrapAlignmentMode | — |
lastWrapAlignmentInherit либо Begin/Center/End относительно предыдущей линии.
SetReverseFillvoid
public void SetReverseFill(bool reverseFill);Меняет направление заполнения строк/колонок поперёк основной оси, false по умолчанию. Не переставляет детей в дереве; поведение по горизонтали учитывает RTL.
| Имя | Тип | По умолчанию |
|---|---|---|
reverseFill | bool | — |
reverseFilltrue меняет поперечное направление заполнения; false оставляет обычное.
SetVerticalvoid
public void SetVertical(bool vertical);false для строк, true для колонок. Меняется только у базового FlowContainer. Любой вызов setter у HFlowContainer/VFlowContainer отклоняется.
| Имя | Тип | По умолчанию |
|---|---|---|
vertical | bool | — |
verticalОсь только базового FlowContainer: true — колонки, false — строки.
FlowContainer.AlignmentMode
| Значение | Описание |
|---|---|
Begin = 0 | Дочерние элементы управления будут расположены в начале контейнера, т. е. сверху, если ориентация вертикальная, слева, если ориентация горизонтальная (справа для макета RTL). |
Center = 1 | Дочерние элементы управления будут размещены в центре контейнера. |
End = 2 | Дочерние элементы управления будут располагаться в конце контейнера, т. е. внизу, если ориентация вертикальная, справа, если ориентация горизонтальная (слева для макета RTL). Последний_WRAP_ALGENT_INHERIRT |
FlowContainer.LastWrapAlignmentMode
| Значение | Описание |
|---|---|
Begin = 1 | Последняя частично заполненная строка или столбец будут перенесены и выровнены по началу предыдущей строки или столбца. |
Center = 2 | Последняя частично заполненная строка или столбец будут перенесены и выровнены по центру предыдущей строки или столбца. |
End = 3 | Последняя частично заполненная строка или столбец будут перенесены и выровнены по концу предыдущей строки или столбца. |
Inherit = 0 | Последняя частично заполненная строка или столбец будут перенесены и выровнены относительно предыдущей строки или столбца в соответствии с |
Свойства темы
Это ключи ресурсов Theme, а не свойства C# класса. Используйте методы GetTheme…() и AddTheme…Override() у Control с соответствующим типом значения.
| Ключ и тип | Описание |
|---|---|
h_separationint | Горизонтальное разделение дочерних узлов. По умолчанию:4 |
v_separationint | Вертикальное разделение дочерних узлов. По умолчанию:4 |