Thanks for the update. Bit busy elsewhere atm, but I will look at it as soon as I have some time.
I have put together my own VisualizerService (overrides UIVisualizerService) which holds weak references to open views in a dictionary. Currently uses ViewModel.Title as the key. This allows me to prevent the same viewmodel being opened in a new window
if it is already open (eg hidden or minimised). It also allows user to register views as 'not managed'. It isn't commercial code atm, but so far, seems to work well in my test apps
This has also enboldened me enough to create my own please wait service (not as fancy as yours) which can be passed a viewmodel to locate the window to shade, or just uses the active window if no viewmodel supplied. It also accepts 'dowork' & 'workdone'
delegates. Allows user to easilly kick work in background thread & be notified when work complete. Added some 'GetPleaseWaitService' helper methods to my viewmodel base (derived from catel.ViewModelBase) and calling the service becomes very easy.
I have also disconnected all 'sub' windows from the main application window (set win.owner to null). This was to prevent all application windows being brought to top when user clicked on a window. Not sure if this has any ramifications, but havent hit any