Wrapper class for system dialog to allow for dependency injection
unit tests

You can use fakes (stubs vs shims) to mock third-party classes. It is not as lightweight as your regular mocks, but it does the job.



exception handling


catch (Exception)
{
    return false;
}



Why don't you do something like Microsoft tends to do often in their framework? You make some internal convenience method IsCriticalException that checks whether to rethrow the exception or swallow it.

catch (Exception ex)
{
    if (IsCriticalException(ex)) throw;
    return false;
}


clean code

Use var when you can.


  Microsoft.Win32.SaveFileDialog dlg = new
  Microsoft.Win32.SaveFileDialog


 var dlg = new Microsoft.Win32.SaveFileDialog