programing

WPF의 스택 패널에서 왼쪽 및 오른쪽 컨트롤 정렬

javamemo 2023. 5. 5. 08:32
반응형

WPF의 스택 패널에서 왼쪽 및 오른쪽 컨트롤 정렬

다음 코드가 있습니다.

<DockPanel>
    <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
        <RadioButton Content="_Programs" 
                    IsChecked="{Binding Path=ProgramBanksSelected}" IsEnabled="{Binding Path=ProgramsEnabled}" Margin="8" />
        <StackPanel>
            <Label Content="Master" Height="28" Name="MasterFileStatus" VerticalContentAlignment="Center"/>
        </StackPanel>
    </StackPanel>
    ...

라디오 버튼은 스택 패널의 왼쪽에 배치되어야 하며(예를 혼란스럽게 하지 않기 위해 일부 버튼을 제거했습니다) 레이블은 오른쪽에 배치되어야 합니다(네스트된 스택 패널에 임시로 배치했습니다).

저는 이미 여러 가지 정렬 조합을 시도해 보았지만 오른쪽 라벨이 보이지 않습니다.이를 위해 무엇을 추가해야 합니까?

사용하지 마십시오.StackPanel,StackPanels 스택. 분명한 이유로 스택 방향의 정렬을 허용하지 않습니다.다음과 같은 열 정의와 함께 를 사용합니다.

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" />
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

비록 이것이 오래되었지만, 누군가 저처럼 이것을 발견한다면, 여기 간단한 해결책이 있습니다.

새 그리드를 만들고 그 그리드 안에 수평 정렬이 다른 두 개의 스택 패널을 배치합니다.

<Grid>
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
        <!--Code here-->
    </StackPanel>
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
        <!--Code here-->
    </StackPanel>
</Grid>

가능한 문제는 이제 추가적으로 처리하지 않으면 두 가지가 서로 중복될 수 있다는 것입니다.

설정한 대로StackPanel에 대한 의 성향.Horizontal,그HorizontalAlignment아동 보호 시설에서는 작동하지 않을 것입니다.보관할 수 있습니다.StackPanel만약 당신이 추가적인 제어가 필요하다면, 저는 로 전환하는 것을 추천합니다.Grid원하는 레이아웃을 만들 수 있습니다.

그리고 또.Grid각 열의 실제 너비를 제어할 수 있습니다.

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="50" />
        <ColumnDefinition Width="150" />
    </Grid.ColumnDefinitions>

    <RadioButton
        Grid.Column="0"
        ...
    />

    <Label
        Grid.Column="1"
        ...
    />
</Grid>

사용자 @pasx가 맞습니다.DockPanel을 사용하여 RadioButton을 왼쪽에 도킹하고 StackPanel을 오른쪽에 고정해야 합니다.

<DockPanel>

    <DockPanel 
        DockPanel.Dock="Top" 
        LastChildFill="False" >

        <RadioButton 
            DockPanel.Dock="Left" 
            Content="_Programs" 
            IsChecked="{Binding Path=ProgramBanksSelected}"
            IsEnabled="{Binding Path=ProgramsEnabled}" 
            Margin="8" />

        <StackPanel
            DockPanel.Dock="Right">

            <Label 
                Content="Master" 
                Height="28" 
                Name="MasterFileStatus" 
                VerticalContentAlignment="Center"/>

        </StackPanel>

    </DockPanel>
    ...

샘플에 표시된 것처럼 중첩 패널 방향 유형을 사용합니다.그리드 너비는 전체 너비를 달성하기 위해 상위 너비로 설정됩니다.

<StackPanel x:Name="stackBlah" Orientation="Vertical">
    <StackPanel Orientation="Horizontal">
        <Grid Width="{Binding ActualWidth, ElementName=stackBlah}" >
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition />
            </Grid.RowDefinitions>

            <StackPanel Grid.Column="0" HorizontalAlignment="Left" >
                <Button Content="Some button" />
            </StackPanel>
            <StackPanel Grid.Column="1" HorizontalAlignment="Right">
                <ToggleSwitch Header="Some toggle" AutomationProperties.Name="ToggleNotifications"/>
            </StackPanel>
        </Grid>
    </StackPanel>
</StackPanel>

언급URL : https://stackoverflow.com/questions/12150914/aligning-controls-on-both-left-and-right-side-in-a-stack-panel-in-wpf

반응형