할 수 있는 방법 WPF StackPanel 채울 수직으로 아래에서 위로?
-
20-08-2019 - |
문제
내가 필요할 수 있을 채우기 위해 stackpanel
가 buttons
하지만 버튼 맨 아래에 표시해야 하의 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 기 때문에 스크롤 막대가 작업이 될 역에서 내용입니다.재미를 볼만큼 당신은 최종 사용자에게 있습니다.;>