할 수 있는 방법 WPF StackPanel 채울 수직으로 아래에서 위로?

StackOverflow https://stackoverflow.com/questions/491647

  •  20-08-2019
  •  | 
  •  

문제

내가 필요할 수 있을 채우기 위해 stackpanelbuttons 하지만 버튼 맨 아래에 표시해야 하의 stackpanel 첫 번째와 위쪽으로 채우.버튼을 동적으로 생성되어있는 알 수 없는 그들의 수도록 visual 해커만이 작동하지 않습니다.해봤으로 실험을 수직 정렬하지만 소용없었습니다.

도움이 되었습니까?

해결책

그렇게 :

<StackPanel VerticalAlignment="Bottom">
    ...
</StackPanel>

버튼을 위쪽으로 채우려면 버튼을 추가하는 대신 위치 0에 버튼을 삽입해야합니다.

다른 팁

또는 스택 패널을 180도 회전시켜 버튼을 하단에서 상단으로 쌓은 다음 버튼을 다른 180도를 회전시켜 다시 오른쪽으로 업로 연결할 수 있습니다.

<StackPanel>
    <!-- rotate all buttons inside this panel -->
    <StackPanel.Resources>
        <Style TargetType="Button">
            <Setter Property="LayoutTransform">
                <Setter.Value>
                    <RotateTransform Angle="180"/>
                </Setter.Value>
            </Setter>
        </Style>
    </StackPanel.Resources>

    <!-- rotate the stack panel -->
    <StackPanel.LayoutTransform>
       <RotateTransform Angle="180"/>
    </StackPanel.LayoutTransform>

    <!-- content -->
    <Button>1</Button>
    <Button>2</Button>

</StackPanel>

또 다른 대안은 대신 DockPanel을 사용하는 것입니다.

DockPanel에서 LastChildFill을 False로 설정하십시오.

그런 다음 첨부 된 도크 속성을 부크 패널에 추가하기 전에 하단에 추가하는 각 버튼에 설정하십시오.

예시 :

            var button = new Button();
            DockPanel.SetDock(button, Dock.Bottom);

문제를 해결하는 가장 좋은 방법은 런타임에 요소가 추가되면 스택 패널에서 파생 된 사용자 정의 컨테이너를 구현하는 것입니다.

    public Window1()
    {
        InitializeComponent();
        for (int i = 0; i < 10; i++)
        {
            Button btn = new Button();
            btn.Content = "Button " + i;
            MyStack.Children.Insert(0, btn);
        }
    }

항목을 추가하는 대신 0 위치에 삽입하십시오.

스택 패널을 다른 컨테이너 (스택 패널이 아님, 도크 패널) 안에 넣고 바닥에 정렬하십시오. 그런 다음 버튼을 채우면 각각의 버튼을 첫 번째 위치에 넣습니다.

Column = 1으로 UniformGrid를 사용하면 깔끔한 충전 스택을 제공하거나 Rows = 1을 깔끔한 수평으로 채워진 스택을 제공한다는 것을 알았습니다. 인덱스 0에서 추가하면 상향식에서 작동합니다.

사랑 변환 솔루션여 Nir.는데 그것이 될 수 있을 사용하여 수행으로 변환합니다.

한 가지 주의할 점은,비록:를 사용하지 않 변환 속에 스크롤 기반 제어 등의 ListBox 기 때문에 스크롤 막대가 작업이 될 역에서 내용입니다.재미를 볼만큼 당신은 최종 사용자에게 있습니다.;>

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top