Цвет фона строк в сетке данных WPF - PullRequest
1 голос
/ 26 августа 2011

У меня есть сетка данных WPF, связанная со списком деталей, и мне нужны чередующиеся цвета строк.Части также могут быть частью группы, и в этом случае вся группа должна быть одного цвета.Вроде как:

Part 1, group 1  -  White background
Part 2, group 2  -  Blue background
Part 3, group 3  -  White background
Part 4, group 3  -  White background
Part 5, group 4  -  Blue background
Part 6, group 4  -  Blue background
Part 7, group 5  -  White background

Чередование цвета должно основываться на группах, а не просто на каждой другой строке.Я пытался использовать grid.ItemContainerGenerator в коде, когда обновляется исходная коллекция, но это не работает.ItemContainerGenerator.ContainerFromIndex () всегда возвращает ноль в это время, я полагаю, потому что сетка все еще обновляется, я не знаю.Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 26 августа 2011

Я использовал RowLoaded / RowUnloaded в прошлом, и с помощью поведения сообщил строке, какое свойство строки datacontext содержит фон. Проблема, которую я обнаружил, заключается в том, что привязка фона строк по какой-то причине поднимается до DataContext таблицы, а не с использованием строк. Если вы заинтересованы в этом подходе, я могу вставить код, который я использую. Требуется, чтобы ViewModel или ListViewModel были достаточно осведомлены, чтобы установить правильные цвета для строк. Я часто следил за цветами в ViewModel, но цвет стал бизнес-потребностью, а не просто аскетическим усилием.

0 голосов
/ 18 января 2012

Я переопределил следующее событие класса DataGrid

protected override void PrepareContainerForItemOverride(System.Windows.DependencyObject element, object item)

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

0 голосов
/ 26 августа 2011

В сложных сценариях (например, цвет, обозначающий статус) я создаю свойство для модели представления, которое возвращает Color для BackgroundBrush на основе любых правил, которые вы хотите.Обычно я создаю статический экземпляр, который я возвращаю повторно для каждой группы, и замораживаю его для экономии ресурсов.

HTH ...

...