Search
Showing posts tagged MVVM.

Implementing a testable "Are you sure?" pop-up in MVVM
A few years ago, I blogged about how to implement an "Are you sure" pop-up in MVVM. Well, I've grown up (a bit) since then, and realised that the code there wasn't testable. I therefore take great pleasure in presenting for your delight, a testable "Are you sure" pop-up in MVVM. Aren't I kind :)
Being good boys and girls, we want to write testable code, so if by some miracle we ever get around to writing unit tests, we can run them safe in the knowledge that they stand a fetid dingo's kidney's chance of working! One of the main issue involved here is ensuring we keep all view-related code out of the view model.
This post explains how to do it (with some pointless pictures)
Implementing an "Are you sure?" pop-up in MVVM
A common scenario is to have a button on a view that is bound to a command on the viewmodel. You can also have an ABCCommandCanExecute() method on the VM that tells the view whether or not the button can be clicked.
This is all fine until you want to ask the user to confirm the action that will be performed when they click the button. For example "Are you sure you want to reformat your hard disk, dial up all the people in your contact list and reformat their hard disks, and then destroy the world?" It's kind of rude to do this without confirmation first.
The problem is that when you use WPF binding to bind the VM's command method to the button's Command property, you lose control over the execution process, and so can't inject a message box into the flow.