I am using a GridView inside the WPF ListView control. On display of data I perform some validations and change color of some cells in each row accordingly. The problem is that there can be thousands of such rows in the ListView (bound to an observable collection)which leads to high CPU utilization.

Is there a way that i can update only the visible rows in the listview. And as I scroll the listview down the next set of rows start getting updated.. This way the CPU utilization would be kept in check inspite of thousands of rows being updated in the observable collection..

Any help is appreciated.