Chapter 7. Dialogs and MVVM
By Muhammad Shujaat Siddiqi
In WPF, dialogs are similar to those in Winform. The only way to show dialogs is by using either Window.Show()
(modeless) or Window.ShowDialog()
(modal) methods.
Note
This includes built-in dialogs, such as
MessageBox
,
OpenFileDialog
, SaveFileDialog
, and PrintDialog
.
Since we need our view model logic to be able to initiate the display of these dialogs, we might be tempted to call these methods directly from our view models. The problem with calling Show()
or ShowDialog()
directly is that it requires the System.Windows.Window
references to be held by view model coupling ViewModel
to System.Windows
. This breaks down the desired separation of concerns in MVVM and makes things like testing our code more difficult than it needs to be.
There is another issue around dialog ownership as you must set a dialog's owner to be the window that will be its parent. Even if we show our dialogs directly from our view models, we still will not be able...