Does the DataWindow host a view model directly, or does it only host the control and has the control a view model?
In the first case, I recommend to add a check in the Closing event to make sure that the ViewModel.HasErrors is false. If not, do not allow the closing of the window.
In the second case, in the closing event ask the user control whether it allows you to close. This all has to be done in the code-behind, not in the view model (because this is view-specific code).
Best thing to do is to create your own window, derive that from the DataWindow and then derive all your windows from that one. Then you can easily insert new functionality into all your windows.