Почему текстовое поле не растягивается, чтобы заполнить пространство в стеке? Это по дизайну? В сетке текстовое поле растягивается, как ожидалось.
WPF - установка HorizontalAlignment = растяжка в текстовое поле в StackPanel
Ответ 1
Да, это по дизайну. StackPanel
выделит пробел, который запрашивает TextBox
. Если вы не установили ширину в TextBox
, для ее текста потребуется только достаточно ширина.
Ответ 2
Ответ Кента кажется правильным.
Чтобы по-прежнему заставить переопределить поведение StackPanel, я думаю, вам нужно будет динамически вычислить - установить свойство Width содержащихся элементов или некорректное переопределение MeasureOverride. Я предпочел бы использовать другой менеджер/панель компоновки. Некоторые вещи я заметил.
- Значение по умолчанию для свойств HorizontalAlignment и VerticalAlignment дочерних элементов Stretch (если вы не укажете его явно).
-
StackPanel будет растягивать элементы на основе значения свойства Orientation. Итак,
- Ориентация = Горизонтальное означает, что все элементы будут вертикально растянуты до макс. Элементы проходят горизонтально.
- Ориентация = Вертикальная означает, что все элементы будут растянуты по горизонтали до макс. Элементы перемещаются по вертикали.
- Если явно не указано, ширина и высота дочерних элементов - NaN. Если вы укажете явное значение, StackPanel выполнит их по настройкам Horiz и Vert Alignment.
- В самой папке StackPanel есть функция HorizontalAlignment и VerticalAlignment, которая добавляет еще один макет. Вы можете поэкспериментировать с этим .
Значение по умолчанию - растяжение для обоих Горизонтальное выравнивание и Вертикальное выравнивание содержимого, которое содержащихся в StackPanel.
Когда свойства Height и Width явно заданные на элементе, эти измерения имеют более высокий прецедент во время компоновки и отменит типичные эффекты настройки Горизонтальное выравнивание для растягивания.
Ответ 3
Мне нужно, чтобы элементы были равномерно распределены, но располагались вертикально.
Я использовал UniformGrid и установил для свойства Columns значение 1. (проверено с помощью TextBox, и оно растягивается так, как вы хотите)