WPF отдельные цвета ячеек в DataGrid с использованием DataTable - PullRequest
4 голосов
/ 15 февраля 2011

У меня есть 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, где я получаю данные, ячейки постоянно обновляются. Поэтому я хотел бы обновить цвет ячейки по мере поступления обновлений.

Я не женат на своем дизайне. Я не хочу, чтобы эта модель подходила на основе кода, который я уже сделал. Я согласен на большинство идей, но я бы предпочел не жестко кодировать имена столбцов. Я также предпочел бы метод, который позволяет мне проверять цвет ячейки, а затем перекрашивать только при необходимости (по соображениям скорости / процессора). Заранее благодарю за помощь.

1 Ответ

1 голос
/ 15 февраля 2011

Посмотрите на триггеры данных. Следующий вопрос переполнения стека может дать вам пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...