web-dev-qa-db-fra.com

WPF: Comment puis-je étirer l'enfant du milieu dans un DockPanel?

J'ai ajouté un DockPanel à un élément RadioButton de sorte que je puisse distribuer le libellé du bouton radio, une zone de texte et un bouton horizontalement en utilisant 100% de la largeur.

En utilisant LastChildFill="True"dans le DockPanel étire le dernier élément. Cela fonctionne bien si la zone de texte est le dernier enfant du panneau. Mais, comme le bouton est le dernier élément et a une largeur fixe, la zone de texte doit être étirée. Cependant, il n'y a pas une telle propriété comme 2ndChildFill="True".

Mon code ressemble à ceci:

    <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>

Et cela me donne ceci:

wpf screenshot

Des idées, des conseils pour résoudre ce problème? Merci d'avance...

39
brgn

Vous devez définir DockPanel.Dock propriété attachée pour vos éléments et laissez TextBox comme dernier élément:

<RadioButton HorizontalAlignment="Stretch"
             HorizontalContentAlignment="Stretch">
    <DockPanel LastChildFill="True">
        <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>
55
max