У меня есть DataGrid в WPF. DataGrid связан с данными в DataTable. DataGrid имеет ItemsSource = "{Binding}". Нет установленных записей DataGridTextColumn. Столбцы / строки DataTable определяются динамически через таблицы базы данных.
В приведенном ниже примере имена столбцов базы данных заносятся в список, а DataTable настраивается таким образом, что в первом столбце есть имя и ряд целочисленных значений:
DataTable theDataTable= new DataTable();
theDataTable.Columns.Add("Name", typeof(string));
for(int i = 0; i < columnNameList.Count ; i++)
theDataTable.Columns.Add(columnNameList[i], typeof(int));
Далее DataGrid связывается (привязывается) к DataTable
theDataGrid.DataContext = theDataTable;
Далее строки настраиваются в DataTable. Опять же, количество строк определяется пользователями в базе данных. Имена пользователей заносятся в список после вызова базы данных. Значения строки по умолчанию установлены на ноль.
for (int i = 0; i < usersNames.Count ; i++)
{
DataRow newDataRow = theTradersDataTable.NewRow();
newDataRow["Name"] = usersNames[i];
for(int j = 0; i < columnNameList.Count ; j++)
{
newDataRow[columnNameList[j]] = 0;
}
theDataTable.Rows.Add(newDataRow);
}
После настройки DataGrid я подключаюсь к API, который обеспечивает обратные вызовы с обновлениями информации о пользователях. После обновления я определяю строку и столбец, которые должны обновлять базовый DataTable, который, в свою очередь, обновляет DataGrid. Все это прекрасно работает.
//inside some API callback
theDataTable.Rows[rowNumber][columnNumber] = someDataSentInViaAPI;
Наконец, вопрос: как обновить цвет конкретной ячейки DataGrid на основе значения в этой ячейке. После обратных вызовов от API, где я получаю данные, ячейки постоянно обновляются. Поэтому я хотел бы обновить цвет ячейки по мере поступления обновлений.
Я не женат на своем дизайне. Я не хочу, чтобы эта модель подходила на основе кода, который я уже сделал. Я согласен на большинство идей, но я бы предпочел не жестко кодировать имена столбцов. Я также предпочел бы метод, который позволяет мне проверять цвет ячейки, а затем перекрашивать только при необходимости (по соображениям скорости / процессора). Заранее благодарю за помощь.