2017-04-26 1 views
0

Um genauer zu sein benutze ich das DataGrid nur als eine Möglichkeit, den Betriebsverlauf der Apps anzuzeigen. Das Problem ist, dass es für die Augen des Benutzers zu schwierig ist, die Spalten zu erkennen. Also habe ich beschlossen, die Spalten nacheinander in Schleifenfarben zu färben. Zunächst weiß, zweite blau, weiß und dritte ...Wie werden die Spalten eines WPF-Datagrids eingefärbt, wenn Spalten definiert und hinzugefügt werden?

Wie ich sehr gut WPF Markup weiß es nicht, ich definiert und die Spalten durch die C# Funktion unten angewendet:

private void generate_columns() 
    { 
     DataGridTextColumn c1 = new DataGridTextColumn(); 
     c1.Header = "Shot number"; 
     c1.Binding = new Binding("shotNum"); 
     c1.Width = 80; 
     dataGrid.Columns.Add(c1); 
     DataGridTextColumn c2 = new DataGridTextColumn(); 
     c2.Header = "Shooter name"; 
     c2.Width = 160; 
     c2.Binding = new Binding("shooter"); 
     dataGrid.Columns.Add(c2); 
     DataGridTextColumn c3 = new DataGridTextColumn(); 
     c3.Header = "shot 1"; 
     c3.Width = 120; 
     c3.Binding = new Binding("shoot1"); 
     dataGrid.Columns.Add(c3); 
     DataGridTextColumn c4 = new DataGridTextColumn(); 
     c4.Header = "shot 2"; 
     c4.Width = 120; 
     c4.Binding = new Binding("shoot2"); 
     dataGrid.Columns.Add(c4); 
     DataGridTextColumn c5 = new DataGridTextColumn(); 
     c5.Header = "shot 3"; 
     c5.Width = 120; 
     c5.Binding = new Binding("shoot3"); 
     dataGrid.Columns.Add(c5); 
     DataGridTextColumn c6 = new DataGridTextColumn(); 
     c6.Header = "Addition"; 
     c6.Width = 180; 
     c6.Binding = new Binding("addition"); 
     dataGrid.Columns.Add(c6); 
     DataGridTextColumn c7 = new DataGridTextColumn(); 
     c7.Header = "Player1 score"; 
     c7.Width = 160; 
     c7.Binding = new Binding("scoreh"); 
     dataGrid.Columns.Add(c7); 
     DataGridTextColumn c8 = new DataGridTextColumn(); 
     c8.Header = "Player2 score"; 
     c8.Width = 160; 
     c8.Binding = new Binding("scoreo"); 
     dataGrid.Columns.Add(c8); 
    } 

in denen c1, c2, ..., c8 sind TextColumns und dataGrid ist der Name des DataGrids. Darüber hinaus wird die Funktion generate_columns() beim Start des Fensters aufgerufen.

Meine Frage ist das kann ich, und wenn ich könnte was solche Änderung soll ich mit dem obigen Code tun, damit ich die Kontrolle über die Farbe übernehmen und ändern Sie es so, wie ich erwähnt habe?

Alle Bits von Hilfe oder Idee ist sehr

angesehen
+1

Tun Sie es einfach in XAML. Lerne das Markup. –

+0

XAML-Eigenschaften sind die gleichen wie die C# -Eigenschaften, es ist nur die Art und Weise des Schreibens ist anders. Zum Beispiel wäre die XAML-Version Ihrer ersten Spalte ''. Sehen Sie, was Sie brauchen? – Rachel

Antwort

0

Wenn Sie es wirklich in C# tun möchten, können Sie die Verwendung von Zellfarbe der Spalte einstellen:

c1.CellStyle = new Style(typeof(DataGridCell)); 
c1.CellStyle.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(Colors.LightBlue))); 

Also, wenn Sie wollen, alternierenden Farben, würde eine schnelle Methode:

for (int i = 0; i < dataGrid.Columns.Count; i++) 
{ 
    var desiredColor = new SolidColorBrush(i % 2 == 0 ? Colors.White : Colors.LightBlue); 

    dataGrid.Columns[i].CellStyle = new Style(typeof(DataGridCell)); 
    dataGrid.Columns[i].CellStyle.Setters.Add(new Setter(BackgroundProperty, desiredColor)); 
} 

i % 2 == 0 ? verwendet wird, um die Farbe für die geraden und ungeraden Zahlen abzuwechseln

+0

Vielen Dank Mann –

+0

können Sie das gleiche für Reihen entweder erklären? –

Verwandte Themen