Ich habe ein Silverlight Datagrid mit benutzerdefiniertem Code, der +/- Schaltflächen auf der linken Seite ermöglicht und eine Tabelle mit einer Baumstruktur anzeigen kann. Die Schaltflächen +/- sind an eine IsExpanded-Eigenschaft in meinem ViewModelRows gebunden, wie ich sie nenne. Die Sichtbarkeit von Zeilen ist an eine IsVisible-Eigenschaft in ViewModelRows gebunden, die basierend darauf bestimmt wird, ob alle übergeordneten Zeilen erweitert sind oder nicht. Einfach genug.
Dieser Code funktioniert gut, wenn ich das Raster mit PageUp/PageDown oder den Pfeiltasten nach oben und unten scrollen, sind alle richtigen Zeilen ausgeblendet und alles hat die richtige Struktur und ich kann mit den +/- Tasten zu meinem spielen Herzenslust. Die vertikale Bildlaufleiste auf der rechten Seite jedoch, obwohl es die richtige Größe beginnt und es durch die Zeilen reibungslos scrollt, wenn ich Zeilen zusammenfalte und sie dann wieder expandiere, wird nicht auf seine korrekte Größe zurückgesetzt.
Die Bildlaufleiste kann immer noch bewegt werden, um durch die gesamte Sammlung zu scrollen, aber weil sie zu groß ist, wenn der Balken sich nach unten bewegt, gibt es noch mehr Reihen zu durchlaufen und es schießt ruckartig den ganzen Weg nach unten nach unten oder manchmal überhaupt nicht scrollen. Das ist ziemlich schwer zu beschreiben, also habe ich einen Screenshot mit den schwarzen Linien eingefügt, um den Unterschied in der Länge der Bildlaufleiste zu zeigen, obwohl die beiden Gitter die gleiche Anzahl von Reihen haben.
Ich denke, das könnte ein Fehler sein, der mit der Art und Weise zusammenhängt, wie das Datagrid die Virtualisierung von Zeilen durchführt. Es scheint mir, als würde es nicht richtig verfolgen, wie groß jede Reihe sein sollte, wenn sich die Expansionszustände ändern. Gibt es eine Möglichkeit, programmgesteuert "poke" (lies hack), um seine Scrollbar-Größe auf LoadingRow oder etwas Hässliches so neu zu berechnen? Ich würde ein Codebeispiel einschließen, aber es gibt 2 C# -Dateien und 1 xaml-Datei, also wollte ich sehen, ob jemand anderes von dieser Art von Problem gehört hat, bevor ich versuche, es in einer unabhängigen Weise reproduzierbar zu machen. Noch einmal, Scrollen mit den Pfeiltasten funktioniert gut, so bin ich mir ziemlich sicher, dass die zugrunde liegende Logik und Bindung funktioniert, gibt es nur ein Problem mit der Zeilenhöhe nicht richtig berechnet.
Da ich einen neuen Benutzer bin, wird es nicht ich-Tags Bild läßt hier so der Link zu einem Bild des Problems:Warum funktionieren meine Bildlaufleisten nicht ordnungsgemäß, wenn Zeilen in silverlight Datagrid programmgesteuert ausgeblendet werden?
http://img210.imageshack.us/img210/8760/messedupscrollbars.png