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