I have a project that uses a DataGrid
with a custom template so that I can add a special row to the bottom of the data rows. I would like this special row to be pinned under the last row but not as part of the ScrollViewer
, such that it remains pinned under the last row until the bottom of the special row hits the bottom of the data grid, then I would like the rows region to size to the space inbetween and scroll accordingly, with the special row always visible.
So far, I have my special row as part of the ScrollViewer
along with the RowsPresenter
. Both the presenter and the special row are in auto-sized rows of a Grid
within the ScrollViewer
, with the ScrollViewer
in a star-sized grid row so that the scrollbar will appear when it runs out of space. How do I get from this, where the rows and special row scroll together to where I want to be, where the rows scroll, but the special row is pinned at the bottom and always visible?
Although my example uses a DataGrid
, I am sure this can be simplified down to just a scrollable element of varying height, and a control pinned beneath it. So far, I imagine I need a Canvas
rather than a Grid
to host my ScrollViewer
and companion special row, with some logic to adjust heights and positions when the ScrollViewer
grows (if I can detect that), but I haven't yet tried this. Is there a better way or is the Canvas
approach the best one available?