programing

WPF: DockPanel에서 중간 아이를 스트레칭하려면 어떻게 해야 하나요?

showcode 2023. 4. 20. 23:21
반응형

WPF: DockPanel에서 중간 아이를 스트레칭하려면 어떻게 해야 하나요?

RadioButton 요소에 DockPanel을 추가하여 라디오 버튼 라벨, 텍스트 박스, 버튼을 100% 폭의 수평으로 배포할 수 있도록 했습니다.

사용.LastChildFill="True"마지막 요소를 늘립니다.텍스트 상자가 패널의 마지막 자식일 경우 이 작업이 올바르게 수행됩니다.그러나 버튼이 마지막 요소이고 너비가 고정되어 있기 때문에 텍스트 상자를 늘려야 합니다.하지만 그런 성질은 없습니다.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 스크린샷

이 문제를 해결할 수 있는 힌트라도 있나요?잘 부탁드립니다.

요소에 연결된 속성을 설정한 후 떠나야 합니다.TextBox마지막 요소로서:

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

수용된 답변은 문제를 수정하는 것이지만 다른 문제를 만드는 것입니다.키보드를 사용하는 경우(TAB인터페이스를 네비게이트 하려면 ,Button에 초점을 맞춘다.TextBox장기적으로는 매우 귀찮을 수 있습니다.탭 주문을 중단하지 않으려면 다음을 사용하십시오.Grid대신DockPanel:

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

다른 방법은 다음을 사용하여 탭 주문을 직접 제어하는 것입니다.TabIndex기여하다.이 작업은 특히 컬렉션에서 컨트롤을 표시할 때 까다로울 수 있습니다.

<RadioButton HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" TabIndex="0">
    <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="..." TabIndex="2"/>
        <TextBox Margin="10,0,0,0" TabIndex="1">Path string</TextBox>
    </DockPanel>
</RadioButton>

언급URL : https://stackoverflow.com/questions/14034674/wpf-how-can-i-stretch-the-middle-child-in-a-dockpanel

반응형