WPF: Zusammenbruch GridSplitter?
Ich habe eine WPF-Seite, mit einem Raster auf Sie.
Gibt es drei Zeilen. Zeile 0 enthält ein GridView mit Height="*"
. Zeile 1 enthält einen GridSplitter mit Height="auto"
. Zeile 2 enthält eine ausführliche form mit Height="2*"
.
Hier ist das Ding - ich habe einen button, soll zum Umschalten der Sichtbarkeit der details bilden. Und das funktioniert Prima. Außer, dass es blendet lediglich die form, in Zeile 2, ist es nicht erweitern Sie das Raster in der Zeile 0, um den Raum zu füllen. Was ich will, ist für die Taste toggle GridView-Steuerelement in der Zeile 0 zu nehmen, bis alle den Raum, und dann wechseln Sie zurück zu, wo die Dinge waren.
Eindeutig das Spiel mit der Sichtbarkeit des Formulars innerhalb der Reihe nicht erreichen, was ich will.
Aber was brauche ich um das Spiel mit?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Musste ich einführen, eine Angefügte Abhängigkeitseigenschaft zu handhaben, in meiner eigenen Anwendung:
Definieren Sie zuerst eine geeignete angefügte Eigenschaft auf eine
DependencyObject
:Dann hören
IsVisibleChanged
:Einmal sind gerade für diese änderungen, müssen Sie speichern oder wiederherstellen der
GridLength
Werte aus der Zeile oder Spalte, die Sie gerade sind (für die Kürze, ich bin nur auch Zeilen):Alles, was übrig ist, ist eine geeignete Implementierung der
GetPrevious
undGetNext
:Nehmen wir an, ich habe diesen XAML-layout:
Dann kann ich ausblenden, das zweite Steuerelement (Zusammenbruch der splitter nach unten) mit diesem code (entspricht der Einstellung
Height="0"
im XAML):Und uncollapse es mit diesem code (entspricht der Einstellung
Height="1*"
in XAML, das ist der Standard für eine RowDefinition):Dies ist, was der splitter macht undercovers, wenn der Benutzer ihn bewegt.
In den Fall, jemand will eine Reine XAML-Lösung war ich in der Lage zu zaubern eine Weise zu verbergen, der splitter und der entsprechenden Zeile, die Verwendung von Stilen, die Setzer und Trigger.
Habe ich eine statische Ressource für meinen Stil, der eingestellt war, ändern Sie die
Height
undMaxHeight
wenn eine bestimmte gebunden boolean gesetzt wurde.Ich einfach auf den Stil, der zu der entsprechenden Zeile, Definitionen, und es funktionierte wie ein Charme:
Bemerkenswert ist, dass ich versuchte, es ohne die MaxHeight-Eigenschaft, und es war nicht kollabieren richtig. Hinzufügen es scheint, getan zu haben, den trick für mich.
Diese GridExpander control erbt form GridSpliter könnten die Jobs, die Sie suchen. Kredit geht an Shemesh für das schreiben der ursprünglichen Silverlight-version, die ich angepasst für meine eigene Verwendung in WPF. Ich finde mich wollen, diese Funktionalität fast überall ich versuchen, mit GridSplitter so kann es ganz praktisch sein.