Ändern Sie die Hintergrundfarbe des Datagrid-Headers in Silverlight

8

Ich möchte die Hintergrundfarbe des Datagrid-Headers in Silverlight ändern.

    
David Padbury 28.11.2008, 12:26
quelle

2 Antworten

7

Obwohl das DataGrid keine Header-Hintergrundeigenschaft verfügbar macht, besitzt es eine Eigenschaft für den ColumnHeaderStyle. Mit der Technik, die DaniCE zuvor für eine einzelne Spalte vorgeschlagen hat, können wir die Header-Vorlage für alle Header-Spalten einschließlich des leeren Platzes auf der rechten Seite ersetzen. Der Nachteil beim Ersetzen der gesamten Vorlage für eine Kopfzeile ist, dass wir die Sortierpfeile und Trennzeichen verlieren, die in der Standardkopfzeilenvorlage vorhanden sind. Glücklicherweise können wir einen Vorlagenbrowser verwenden Extrahiere die verwendete Standardvorlage und modifiziere dann eine Kopie davon.

Hier habe ich ein kurzes Beispiel zusammengestellt, das den Hintergrund der Spaltenüberschriften in LightBlue ändert, während die Separatoren und die Sortierung beibehalten werden. Sehen Sie sich die Standardvorlage DataGridColumnHeader in einem Vorlagenbrowser an , um zu sehen, wie Sie mit dem Ändern des Hintergrunds umgehen können, wenn Sie die Maus über den ColumnHeader bewegen.

Hintergrund des DataGrid-Headers http://i34.tinypic.com/2q2ixch.jpg

%Vor%

Hoffe, das hilft!

    
David Padbury 01.12.2008 12:35
quelle
1

Ich habe eine "saubere" Lösung entwickelt. Hoffentlich funktioniert es für Sie. Ich überschreibe einfach das DataGrid und ich legte die GetTemplateChild-Methode offen. Mit ihr können Sie auf den DataGridColumnHeaderPresenter und die DataGridColumnHeaders zugreifen, die darin enthalten sind ...

1) Überschreiben Sie DataGrid

%Vor%

2) Ändern Sie den Hintergrund

DataGridEx-Gitter = neues DataGridEx ();

... nachdem die Vorlage angewendet wurde ...

DataGridColumnHeadersPresenter obj = DataGrid.GetTemplateObject ("ColumnHeadersPresenter") als DataGridColumnHeadersPresenter;

DataGridColumnHeader h = obj.Children [0] als DataGridColumnHeader;

h.Background = neuer SolidColorBrush (Colors.Red);

    
Roberto Vercelli 19.05.2009 17:15
quelle