That's a difference between wpf and silverlight. Unfortunately, what you have done won't work because the dialog is shown "async" in Silverlight, You need to grab the result after the dialog has closed. I usually do this with coroutines and some dsl magic.
Have a look at the game library sample to see some similar things. But, your code might look like this:

You can have a look at the full version of Caliburn in the ShellFramework for an example of some of these types of IResults and the Show static helper. It should all be fairly easy to port to CM if you find something there that you like.