Erstellen eines reversiblen StackPanels in WPF

8

Ich möchte eine benutzerdefinierte StackPanel mit einer ReverseOrder Eigenschaft erstellen, die ich deklarativ auf true setzen kann, damit die Elemente im StackPanel in der umgekehrten Reihenfolge der normalen erscheinen (zB von unten nach oben oder von rechts nach links) ). Es muss im laufenden Betrieb reversibel sein.

Ich denke daran, eine neue Klasse aus StackPanel abzuleiten, aber ich muss wissen, welche Methoden überschrieben werden müssen.

Endgültige Lösung:

%Vor%

Definieren und registrieren Sie auch ReverseOrder und rufen Sie UpdateLayout auf, wenn es sich ändert.

    
devios1 07.08.2010, 00:11
quelle

3 Antworten

12

Sie können FrameworkElement.ArrangeOverride neu implementieren und alle child.Arrange in umgekehrter Reihenfolge als sonst aufrufen.

Ссылка

So etwas (nicht getestet):

%Vor%

Stellen Sie sicher, dass Sie UpdateLayout nach dem Ändern der ReverseOrder-Eigenschaft aufrufen.

    
ggarber 07.08.2010, 00:25
quelle
3

MeasureOverride und ArrangeOverride

Tatsächlich kann Ihre Measelogik dieselbe wie StackPanel sein, sodass Sie ArrangeOverride einfach überschreiben können. Beachten Sie, dass StackPanel eine gewisse Logik für das Scrollen bietet, die Sie möglicherweise duplizieren müssen, wenn Sie es selbst schreiben. Möglicherweise möchten Sie direkt von Panel erben und nicht versuchen, das Scrollen zu unterstützen.

Siehe Benutzerdefinierte Panel-Elemente in der MSDN-Seite für Panels oder verschiedene Blog-Einträge auf Schreiben von benutzerdefinierten Feldern wie WPF-Tutorial - Erstellen eines benutzerdefinierten Panel-Steuerelements oder Benutzerdefinierte Felder in WPF erstellen

    
Quartermeister 07.08.2010 00:26
quelle
0

Hier ist eine andere Variante. Es basiert auf StackPanel s Referenzquelle und ist auch in der Lage, mit Item-Alignments umzugehen.

%Vor%     
vines 30.12.2017 00:16
quelle

Tags und Links