WPF - установка HorizontalAlignment = Stretch to Textbox в StackPanel

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
0
16 565
3

Ответы 3

Да, это задумано. StackPanel выделит место, которое запрашивает TextBox. Если вы не установили ширину на TextBox, ему потребуется только ширина, достаточная для размещения текста.

Ответ Кента кажется правильным. Чтобы по-прежнему принудительно переопределить поведение StackPanel, я думаю, вам нужно динамически вычислить свойство Width содержащихся элементов ИЛИ какое-то забавное переопределение MeasureOverride. Я бы предпочел использовать другой менеджер / панель компоновки. Кое-что я заметил ..

  • Значение по умолчанию для свойств HorizontalAlignment и VerticalAlignment дочерних элементов - Протяжение (если вы не укажете его явно).
  • StackPanel будет растягивать элементы в зависимости от значения свойства Orientation. Так

    • Orientation = Horizontal означает, что все элементы будут растянуты по вертикали до максимума. Элементы текут горизонтально.
    • Orientation = Vertical означает, что все элементы будут растянуты до максимума. Элементы текут вертикально.
  • Если явно не указано иное, ширина и высота дочерних элементов равны NaN. Если вы укажете явное значение, StackPanel будет учитывать их по сравнению с настройками Horiz и Vert Alignment.
  • Сам StackPanel имеет HorizontalAlignment и VerticalAlignment, которые добавляют дополнительный поворот макета. Можно поэкспериментировать с этим пример.

StackPanel

The default value is stretch for both HorizontalAlignment and VerticalAlignment of content that is contained in a StackPanel.

Горизонтальное выравнивание

When Height and Width properties are explicitly set on an element, these measurements take higher precedent during layout and will cancel the typical effects of setting HorizontalAlignment to Stretch.

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

Я использовал UniformGrid и установил для свойства Columns значение 1. (проверено с помощью TextBox, и оно растягивается, как вы хотите)

Это был точный ответ, который мне нужен для решения аналогичной проблемы с макетом кнопок. Спасибо!

Christopher Currie 12.11.2010 03:44

Другие вопросы по теме