Legen Sie die Hintergrundfarbe für dynamisch erstellte DataGrid-Spalten in WPF fest
Posted: 27 Jan 2025, 09:40
Ich muss eine Hintergrundfarbe für einen DataGridColumn festlegen, in dem die Hintergrundfarbe jeder Zelle basierend auf dem Quellwert der Elemente unterschiedlich sein kann. Vom Dataitem bis zur Hintergrundfarbe für die Zellen der prozentualen Spalte, in denen die Farbeigenschaft den Hex -Wert enthält und umgewandelt werden muss, aber bisher war ich erfolglos, die Lösung zu finden. < /p>
i Ich habe versucht, es zu nähern mit: < /p>
Dann lade ich die Elemente als Quelle für das DataGrid:
i Ich habe versucht, es zu nähern mit: < /p>
Code: Select all
column.CellStyle = new Style
{
Setters = { new Setter { Property = BackgroundProperty, Value = new Binding("Color") } }
};
< /code>
Aber ich muss den Hex -Wert irgendwie konvertieren und keine Ahnung haben, wie. Ich werde nicht lügen, ich habe KI um Hilfe gebeten, aber es scheint mein Problem nicht zu verstehen.public class DataItem
{
public string Name {get; set;}
public string Percentage {get; set;}
public string Color {get; set;}
}
Code: Select all
private void LoadDataGridElements(List items)
{
grid.ItemsSource = null;
grid.Items.Clear();
grid.Columns.Clear();
grid.ItemsSource = items;
DataGridTextColumn column = null;
NewColumn (grid, "Name", true, "Name");
column = NewColumn (grid, "Percentage", false, "Percentage");
}
< /code>
Und schließlich hier ist die Definition für die NewColumn -Methode: < /p>
private DataGridTextColumn NewColumn(DataGrid grid, string header, bool autoWidth, string bindingPath)
{
DataGridTextColumn dgtc = new DataGridTextColumn { Header = header, Width = new DataGridLength(1, autoWidth ? DataGridLengthUnitType.Auto : DataGridLengthUnitType.Star), Binding = new Binding(bindingPath) };
grid.Columns.Add(dgtc);
return dgtc;
}