StackPanel
을 ReverseOrder
속성으로 빌드하고 싶습니다. StackPanel의 요소가 정상의 반대 순서 (예 : 맨 아래 오른쪽 또는 오른쪽)로 표시되게하려면 선언적으로 true로 설정할 수 있습니다 왼쪽으로). 즉석에서 뒤집을 수 있어야합니다.WPF에서 되돌릴 수있는 StackPanel 만들기
StackPanel에서 새 클래스를 파생시킬 생각이지만, 재정의 할 메소드를 알아야합니다.
최종 솔루션 :
protected override System.Windows.Size ArrangeOverride(System.Windows.Size arrangeSize) {
double x = 0;
double y = 0;
IEnumerable<UIElement> children = ReverseOrder ? InternalChildren.Cast<UIElement>().Reverse<UIElement>() : InternalChildren.Cast<UIElement>();
foreach (UIElement child in children) {
var size = child.DesiredSize;
child.Arrange(new Rect(new Point(x, y), size));
if (Orientation == Orientation.Horizontal)
x += size.Width;
else
y += size.Height;
}
if (Orientation == Orientation.Horizontal)
return new Size(x, arrangeSize.Height);
else
return new Size(arrangeSize.Width, y);
}
이 또한 정의하고 ReverseOrder
를 등록하고 변경하는 경우 UpdateLayout
를 호출합니다.
완벽! 고마워요. 나는 그걸 생각할 필요조차 없었습니다! ;) – devios1
uielements를 되 돌리는 효과는 무엇입니까? 실제로 ArrangeOverride에서 이전에 Apposed로 발생한 일이 무엇입니까? –