Подтвердить что ты не робот

WPF: Как растянуть среднего ребенка в DockPanel?

Я добавил DockPanel для элемента RadioButton, чтобы я мог распространять метку радиокнопок, текстовое поле и кнопку горизонтально, используя 100% ширины.

Использование LastChildFill="True" внутри DockPanel растягивает последний элемент. Это хорошо работает, если текстовое поле является последним дочерним элементом панели. Но, поскольку кнопка является последним элементом и имеет фиксированную ширину, текстовое поле должно быть растянуто. Однако нет такого свойства, как 2ndChildFill="True".

Мой код выглядит следующим образом:

    <RadioButton HorizontalAlignment="Stretch"
                                        HorizontalContentAlignment="Stretch">
        <DockPanel >
            <TextBlock VerticalAlignment="Center">in location:</TextBlock>
            <TextBox Grid.Column="1" Margin="10,0,0,0">Path string</TextBox>
            <Button HorizontalAlignment="Right" 
                    Margin="10,0,0,0" Padding="3,0">...</Button>
        </DockPanel>
    </RadioButton>

И это дает мне следующее:

wpf screenshot

Любые идеи, подсказки, чтобы исправить это? Большое спасибо заранее...

4b9b3361

Ответ 1

Вам нужно установить DockPanel.Dock прикрепленное свойство для ваших элементов и оставить TextBox в качестве последнего элемента:

<RadioButton HorizontalAlignment="Stretch"
             HorizontalContentAlignment="Stretch">
    <DockPanel>
        <TextBlock DockPanel.Dock="Left"
                   VerticalAlignment="Center"
                   Text="in location:" />
        <Button DockPanel.Dock="Right"
                Margin="10,0,0,0"
                Padding="3,0"
                Content="..." />
        <TextBox Margin="10,0,0,0">
            Path string
        </TextBox>
    </DockPanel>
</RadioButton>