WPF TextBox не будет заполняться, если DockPanel.LastChildFill = true - PullRequest
0 голосов
/ 20 февраля 2019

Почему мой TextBox не заполняет доступное пространство в родительском элементе DockPanel?Я ожидал, что он растянется, чтобы заполнить оставшееся горизонтальное пространство.Кнопка прикреплена справа хорошо.У меня есть это в верхней части моего окна:

<DockPanel Margin="20,10,20,0" DockPanel.Dock="Top" >
    <TextBox TextWrapping="Wrap" Text="{Binding Input}" Background="#FFE4EBFF" Margin="0,0,5,0" />
    <Button Content=" _Evaluate" IsDefault="True" HorizontalAlignment="Right" DockPanel.Dock="Right" />
</DockPanel>

TextBox прикрепляется слева, но имеет ширину около 5 пикселей.Это последний дочерний элемент со значениями по умолчанию DockPanel.Dock = Left, HorizontalAlignment = Stretch.Я пробовал другие значения стыковки и выравнивания без успеха.Является ли TextBox исключением из обычных правил макета?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Когда вы устанавливаете DockPanel.LastChildFill = true

Какой последний дочерний элемент вы добавляете?

Кнопка.

Не текстовое поле.

Порядок сверху (первый) и нижний (последний).

Я не уверен, какой именно результат вы хотите, но, возможно, вам просто нужно сделать текстовое поле последним потомком:

    <DockPanel Margin="20,10,20,0" DockPanel.Dock="Top" >
        <Button Content=" _Evaluate" IsDefault="True" HorizontalAlignment="Right" DockPanel.Dock="Right" />
        <TextBox TextWrapping="Wrap" Text="{Binding Input}" Background="#FFE4EBFF" Margin="0,0,5,0" />
    </DockPanel>
0 голосов
/ 20 февраля 2019

Мне кажется, это работает:

<DockPanel Margin="20,10,20,0" DockPanel.Dock="Top" LastChildFill="True">
    <Button Content=" _Evaluate" IsDefault="True" HorizontalAlignment="Right" DockPanel.Dock="Right" />
    <TextBox TextWrapping="Wrap" Text="{Binding Input}" Background="#FFE4EBFF" Margin="0,0,5,0" />
</DockPanel>
...