Ich habe den folgenden XAML:
%Vor% Wenn nur ein ColumnDefinition
mit einem Width
von Auto
vorhanden ist, funktioniert GridSplitter
ordnungsgemäß. Sobald jedoch mehrere Spalten mit einem Width
von Auto
vorhanden sind, wird die erste Auto
-Spalte ebenfalls vergrößert, wenn GridSplitter
verschoben wird (kann in Zelle 1,0
gesehen werden).
Vor der Größenänderung:
Nach der Größenänderung:
Wie kann ich verhindern, dass der GridSplitter die Größe der zweiten Spalte ändert?
Wenn Sie die vorhandenen Spalten nicht ändern können, könnten Sie vielleicht versuchen, dieses Verhalten programmgesteuert zu erreichen ...
Benennen Sie die Spalten:
%Vor%Hinzufügen von Ereignissen zum Grid-Spliter:
%Vor%Speichern Sie dann die Spaltenbreiten vor dem Ziehen und übernehmen Sie die Änderung auf die erste Spaltenbreite anstatt auf die zweite:
%Vor%Ich habe einige Tests durchgeführt, und ich glaube, dass ich erklären kann, was passiert, auch wenn ich nicht ganz sicher bin, wie ich es beheben kann.
Der Test: Bewegen Sie den Splitter herum und beobachten Sie die relativen Größen von (0,0) und (3,0). Sie sind immer genau gleich.
Fazit: Dieses Verhalten resultiert aus der Tatsache, dass sowohl (0,0) als auch (3,0) * Breite sind, also hat jede von ihnen die Hälfte der verfügbaren Breite. Der Splitter begrenzt jedoch die Größe von (3,0). Da (3,0) eine Grenze für seine Größe hat, aber auch die Hälfte der verfügbaren Breite haben soll, bedeutet dies, dass (0,0) auch die gleichen Größenbeschränkungen wie (3,0) aufweist. Wenn der Splitter (3,0) schrumpft, muss (0,0) auch schrumpfen, um den durch die Breite * angegebenen Anteil beizubehalten. Als Ergebnis sind (1,0) und (2,0) die einzigen Spalten, die wachsen dürfen, um den verbleibenden Raum zu füllen, und da (2,0) nur den Teiler mit einer statischen Breite von 20 enthält (1, 0) wächst, um den verbleibenden Raum zu füllen.
Wie gesagt, ich bin mir nicht sicher, wie ich das beheben soll, aber der erste Schritt zur Behebung eines Problems besteht darin, es zu verstehen. Hoffentlich hilft das jemandem, die Lösung zu finden.
BEARBEITEN: Ein weiterer Test zeigt an, dass das Obige nur wahr ist, wenn (1,0) auf Auto oder Fixed Width eingestellt ist. Wenn (1,0) auf * oder ein Vielfaches von * gesetzt wird, verhalten sich alle * Abschnitte merkwürdig und wachsen und schrumpfen ohne Rücksicht auf ihre angenommenen Proportionen.
EDIT2: Als ich mich umsah, kam ich über diesen Link: Ссылка
Eines der Dinge, die bei diesem Link erwähnt werden, ist das Folgende:
Erinnern Sie sich, dass ein GridSplitter in seiner eigenen Spalte und mit seinem HorizontalAlignment auf "Center" setzt die Größe der Spalten auf beiden Seiten davon. Im Beispiel unten werden die Spalten 0 und 2 in der Größe geändert, aber der Breite von Spalte 3 wird nicht geändert.
Das gesamte beobachtete Verhalten in meinen Tests passt zu einem der Beispiele, die bei diesem Link erwähnt wurden. Meine neue Schlussfolgerung ist, dass dieses Verhalten alles absichtlich ist, eher ein seltsamer Bug, wie ich es von Anfang an angenommen habe.
Tags und Links wpf gridsplitter wpfgrid