Has anyone tried to implement the following scenario? I would be interested in learning what solutions are out there to accomplish this. This has become a real pain for our users...

We have a WPF DataGrid that gives the user the ability to filter their data rows based on Column (where Column = Value or Begins With, Ends With, Contains, etc etc). They can also sort the data by clicking on one of the Column headers or we also provide them a sort window where they can add multiple columns and choose Ascending/Descending for each column (which is simply applied to the "SortDirection" property on each Column they choose, it also seems to use a "CollectionView" along with SortDescriptions).

The issue is when a user is editing data and has a "filter" or "sort" (or both) applied, if the user edits the value on one of those filtered/sorted columns, the row will "move" and take the cursor along with it. If the new value is a value that is "filtered", then the row will disappear entirely (as it should, due to the "filtering" applied by the user).

They would like either one of two things to happen instead:

1 - Go ahead and automatically sort and filter after each cell is changed, if the row "moves", move the cursor to the next row (same cell) instead of the cursor following the row to its new desitation (and possibly scrolling the current viewable data rows off the screen). 

2 - As soon as a row is edited, disable all sorting and filtering until the user clicks "Save" or "Refresh" (or some other option)?

I can also see where we might take one approach for filtering and another for sorting.

Does anyone have a better idea or have any ideas on how to implement this?

I have a couple of ideas (For instance, to disable the sorting: in my CellEditEnding event handler, I could store the users sort options, clear them from each column and then reapply them when the user clicks Save/Reset or maybe I could handle the "Sorting" event and set "e.handled" to true, when the data is being edited??). I am just so new to WPF and the DataGrid, I am wondering if there might be a "best practice" out there or a property that I just haven't found such as "DisableSorting=true/false" (lol).

Thoughts? Opinions?