Grid-Columns und Textboxen synchron positionieren

03/03/2009 - 17:26 von Alexander Mueller | Report spam
Hi

ich verwende ein WPF-Toolkit Datagrid.
Unterhalb des Grids (oder alternativ als letzte Zeile des Grids)
sollen zwei Textboxen / Textblocks angezeigt werden, die die
Summen der drüberliegenden Spalten anzeigen.

Die Textboxen sollten in der Breite und der horiz. Positionierung den
darüberliegenden DataGrid-Spalten entsprechen.

Die Breite ist kein Thema, die bekommt man bequem über
myDataGrid.Columns.Item(index).ActualWidth

An die Positionierung der DataGrid-Spalten komme ich aber nicht
richtig ran
Es gibt keine Left-Eigenschaft. Momentan hab ich einen schlechten
Workaround, in welchem ich die ActualWidth der geringer-indizierten
Spalten summiere. Das gib ein eher schlechtes Ergebnis weil natürlich
die Offsets allermöglichen Zwischenelemente des Visualtrees fehlen.

Frage:
Wie bekomme ich den exakten Wert des Offets einer DataGrid-Spalte
zum linken DataGrid-Rand?

Alternativ könnte ich mich auch mit einer anderen Layout-Technik
anfreuen, die das von alleine löst.

MfG,
Alex
 

Lesen sie die antworten

#1 Alexander Mueller
07/03/2009 - 00:35 | Warnen spam
Alexander Mueller schrieb:

ich verwende ein WPF-Toolkit Datagrid.
Unterhalb des Grids sollen zwei Textboxen angezeigt werden, die die
Summen der drüberliegenden Spalten anzeigen.

Die Textboxen sollten in der Breite und der horiz. Positionierung den
darüberliegenden DataGrid-Spalten entsprechen.





Also ich hab es jetzt gelöst. Das Problem war, dass
DataColumn oder auch DataTemplateColumn nicht visuell sind
und man daher die Helper-Methoden von VisualTreeHelper nicht
bemühen kann.
Was allerdings visuell ist, sind die Zellen einer DataGridRow
von denen bekommt man über VisualTreeHelper.GetOffset(cell)
die exakten Koordinaten, der Zelle, als auch der Spalte.
Bei den Zellen war das Problem, dass es bei WPF wohl einen Moment
dauert, bis nach Datenbindung die UI voll aufgebaut / aktualisiert ist

Wenn man das Positionieren aber immer im Event LayoutUpdated durchführt,
sind alle Objekte aufgebaut und man kann das Offset der Cell / Column
exakt berechnen.

MfG,
Alex

Ähnliche fragen