Not sure if this'll help you - but laggy scrolling can be because you have virtualization turned on, and UIElements have to be generated as you're scrolling. If you turn off Row virtualization, it'll take longer to load up the control in the beginning, but then scrolling will be faster and smoother. Easiest way to do this is to set CanContentScroll on the grid to false, and then place the entire DataGridControl inside a ScrollViewer.
On the contrary, if you must use row virtualization, and the lag is due to the time taken to build the new rows being scrolled into view - you might want to make sure column virtualization hasn't been turned off (IsColumnVirtualizationEnabled - true by default). If your rows have lots of columns, you can save time by only building the cells in the visible columns as you scroll, and then worry about the rest if/when the user scrolls horizontally.
Deferred scrolling also improves the performance of scrolling, but the downside is the user can't see what row they've scrolled to until they release the scroll bar, but this can be somewhat mediated by using the TableView "ShowScrollTip" property to display information about the row at the current position of the scroll bar.
Other none of those are really helpful to you, you might want to look at this page: http://doc.xceedsoft.com/products/xceedwpfdatagrid/Data_Virtualization.html and try messing around with using DataGridVirtualizingCollectionViewSource objects.