Laden...

Header im DataGrid (in xaml) schräg darstellen

Erstellt von AnnaBauer21 vor 4 Jahren Letzter Beitrag vor 4 Jahren 940 Views
A
AnnaBauer21 Themenstarter:in
9 Beiträge seit 2020
vor 4 Jahren
Header im DataGrid (in xaml) schräg darstellen

Guten Morgen ihr Lieben 🙂

Ich bin neu hier und hoffe, dass ich bei meiner ersten Frage alles richtig mache!

Ich möchte eine ähnliche Tabelle wie auf dem Bild im anhang erstellen.

Ist:

  • Ich habe im xaml ein DataGrid definiert
  • Die Inhalte werden über eine ObservableCollection an ItemsSource gebunden wodurch die Header & die Zeilen automatisch befüllt und erstellt werden

Soll:

  • Die Header sollen wie auf dem Bild schräg dargestellt werden
  • Die schräge Darstellung soll wie auf dem Bild in die nächste Spalte ragen
  • Die Spaltengröße soll entsprechend dem Inhalt oder des Headers sein, jenachdem was größer ist

In einem Style für DataGridColumnHeader habe ich bisschen mit RenderTransform & LayoutTransform herumgprobiert und durch SkewTransform & RotateTransform die Header drehen können
Allerdings ist der Text verzerrt, die Header füllen nicht den gesamten Bereich der Spalte aus, und die Header drehen sich nur innerhalb dem eigenen Spaltenbereich (siehe Beitrag 2).

Das Ziel soll sein, dass durch den Schrägen Headertext die Spalte schmaler wird, da der Inhalt der Zelle meistens sehr kurz ist.

Gibt es evtl. die Möglichkeit für die Header ein Span von 2 zu definieren?

Ich hoffe ihr könnt mir helfen und ein paar Tipps geben!

Liebe Grüße
Anna

A
AnnaBauer21 Themenstarter:in
9 Beiträge seit 2020
vor 4 Jahren

Anhang für vorherigen Beitrag

5.657 Beiträge seit 2006
vor 4 Jahren

Was du eigentlich willst, ist, SkewTransform auf den Header und RotateTransform auf den Header-Text anzuwenden. Evtl. könnte es funktionieren, SkewTransform auf den Header und dann den entgegengesetzten SkewTransform + RotateTransform auf die Schrift anzuwenden.

Alternativ könntest du den gesamten Header oder auch nur die Schrift manuell in ein WriteableBitmap zu rendern, und dieses dann ausgeben. Aber dann müßtest du dich auch um die Klick-Ereignisse selbst kümmern.

Im Endeffekt ist es sicherlich ziemlich aufwendig, da das DataGrid im Framework dieses Feature nicht selbst unterstützt. Wahrscheinlich ist es aber besser, mal zu schauen, ob es nicht ein komerzielles Grid gibt, das diese Darstellungsform bereits unterstützt.

Weeks of programming can save you hours of planning