I'm working at the moment on how to handle navigation in a new WPF app and would love to hear how other people are approaching things.
In a previous app which was ported to Caliburn Micro from Caliburn I used a static class to return an IResult which did the dirty work. There were various overloads but it looked something like this:
yield return Show.Child<ProjectionsViewModel>().In<DashboardViewModel>();
This worked very well and was easy to test but I have a couple of problems with it.
Firstly it means that View Models have knowledge of other View Models in a way that makes me mildly uncomfortable, even if it is just the type. Secondly, and more importantly, the new app will be doing lots of stuff over the network and I really want to take
advantage of the way async and await lets you handle this. Unfortunately you cannot mix iterators and async so I know that going with using IResult for navigation is going to cause me lots of pain further down the track.