Integrate Caliburn.Micro with Prism

Sep 1, 2010 at 7:18 PM

Hi Rob, i would like to use some features of Caliburn.Micro in a project, more precisely, action messages and conventions. And i would like to use Prism, for manage UI Composition and Module Loading.

Can you tell me some advice to build this integration?, is this integration really possible?


Sep 1, 2010 at 8:17 PM

Integration is possible. You can have a look at Caliburn's integration for more info. However, I don't recommend it anymore. You can use MEF for modules and Conductors/Screens/VM-Composition instead of RegionManager. It works pretty nicely that way.

Sep 7, 2010 at 9:39 PM

Hi Rob,
Having recommended Caliburn Micro to me in a different thread, this is my next question....
Have there been any blogs or articles on this - especially on the alternative for RegionManagers



Sep 7, 2010 at 11:27 PM

My next article will be on using Screens/Conductors to build a pluggable Billy-Hollis-Style shell. I hope that will adequately demonstrate my preferred technique. In the mean time, have a look at how the Game Library sample does composition. It's currently in Marco's fork

Jun 8, 2011 at 4:21 PM

Sorry for digging up such an old thread. Does this mean that CM can now do the things the OP was using Prism for ("UI Composition and Module Loading")?

I haven't had a chance to look at Prism, but I ran across it when checking out Unity as an IoC framework. How would you compare CM with Prism?

Jun 8, 2011 at 4:24 PM

CM can do everything that Prism does (in its own way) and more, except for module loading. For that, when I actually need it, I personally, generally use MEF plus a little custom code. It turns out to be pretty easy to write an app-specific module loader. We even have a (very) simple example in the recipes section.

Jun 8, 2011 at 8:23 PM

I agree with Rob. I did some testing recently and decoupled the HelloScreens sample. This for sure shows "UI Composition and Module Loading". Forked and added it as "DecoupledHelloScreens" for interested.

Jun 8, 2011 at 11:32 PM

+1 for the custom module loading.

We use Ninject + some custom code.

We have a shell app that scans a configured directory and loads modules by naming convention which injects workspaces into the shell - post login.  It's a few lines of code and works really well.