WPF Datagrid с переменным количеством столбцов И изменяет цвет фона в зависимости от значения - PullRequest
0 голосов
/ 09 октября 2010

Я пытаюсь создать сетку, которая представляет заказы за месяц (в стиле Excel).

Для этого я использовал таблицу данных WPF и определил свой столбец в коде C #:

for (int i = 0; i < noOfDaysInMonth; i++)
{
        DataGridTextColumn tmpColumn = new DataGridTextColumn
        {
               Header = (i + 1).ToString(),
               Binding = new Binding("CellStrings[" + i + "]"),
        };

overviewBookingsDataGrid.Columns.Add(tmpColumn); 

Теперь это работает нормально.Проблема, которую я получил, состоит в том, что я не знаю, как стилизовать цвет фона каждой ячейки, в зависимости от того, заполнен ли слот полностью, частично забронирован или пуст.Все примеры, которые я нашел, были в XAML и определяют его вместе со столбцом, и я не знаю, что переводится в C #.

1 Ответ

0 голосов
/ 09 октября 2010

Вам необходимо определить стиль ячейки данных в вашем XAML. Установите несколько триггеров на основе свойства тега ячейки. Например, если это «Зеленый», тогда закрасьте ячейку зеленым.

После того, как вы заполнили свою сетку данных, вы можете перебирать свою таблицу в коде, получать ячейку данных для каждого необходимого элемента, устанавливать для тега ячейки правильное значение, а триггеры стиля позаботятся о том, чтобы закрасить ячейку за вас (если хотите очистить цвет фона, установите тег обратно на ноль). Или, если вы хотите избежать XAML, вы можете напрямую установить фон ячеек.

В Интернете есть множество примеров того, как получить ячейку данных для данного элемента, но я приведу одно слово предупреждения - поскольку сетка данных wpf по умолчанию виртуализирована, вам нужно прокрутить элементы в поле зрения. и вызовите UpdateLayout () для сетки данных элемента, прежде чем вы сможете безопасно обращаться к ячейке данных для данной сетки данных.

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