Hi devz,

While using a Microsoft.Win32 Dialog (OpenDialog or SaveDialog), it is possible that it will be opened behind the Main Window. So a good way to go back on that dialog is to use the ALT+TAB combo. But not really intuitive for the end user.

The best way would be that this dialog is always on top of the Main Window.

This is the way 😎

var sd = new SaveFileDialog
{
   FileName = "test.txt",
   Filter = "Txt file|*.txt",
   Title = "Save file"
};

bool? dialogResult = sd.ShowDialog(Window.GetWindow(Application.Current.MainWindow));

if (dialogResult != null && dialogResult == true)
   fileName = sd.FileName;

Code language: C# (cs)

The key here is to tell your dialog which window is its parent. To do that you can simply pass the parent window as a parameter to your dialog.

To get the Main Window (even from a ViewModel), you can use this:

Window.GetWindow(Application.Current.MainWindow)

Not pure MVVM, I known, but I don’t feel like a heavy cheater doing that. 😉

Happy coding!