Cinch vs Prism, WAF and Caliburn

May 21, 2010 at 4:01 PM
Hello there, This last month I've been looking at different MVVM application frameworks. I'm looking for the following: - SL and WPF capabilities - Code that allows me to use MEF - Code that will easily allow me to work with EF datasources - VS2010 Net 4 integration - Well known, well used and good support - Code that will be around in 5 years time I've narrowed it down to the following: - Prism - Possibly the next release in the coming months will meet my needs - WAF WPF Application Framework - I found the code easy to use and there is a new V2 version planned. Jbe seems to be good at helping users - Cinch - Looks good to me. New release coming in the next month or two that will support MEF, VS2010, SL and NET 4 - Caliburn - ?? As this is a Cinch discussion I'd be really interested to hear your opinions on why you chose Caliburn over the other products. Note that I posted the same question on the Caliburn discussion. Should be interesting to hear what people have to say. Thanks in advance
Jul 9, 2010 at 5:37 AM

I too am evaluating options.

One thing I noticed (if I understand correctly) is that Caliburn takes an approach of constructing the ViewModel first and then selecting and attaching a view. I think that Cinch V2 does the opposite. As a view is loaded, the framework locates and creates the appropriate ViewModel for it. Sacha refers to this as View-first and indicates that this makes it more Blendable.

I think that Caliburn has some very elegant features with all the Convention based stuff, and I really like their "Actions" model for hooking an event to a VM method. Very nice. On the other hand, Caliburn feels like I am stepping away from standard WPF and into a somewhat strange new world that is "Caliburn Style".

Not sure what I think about all of this yet. I plan to play with the two frameworks a bit more.

Jul 9, 2010 at 12:18 PM

Yeah Caliburn has some great stuff for sure, me I like view first, as its more blendable really.

Jul 9, 2010 at 3:39 PM
Any articles out there that explain view first and blendable. I recall that you mentioned you were going to make Cinch blendable but I'm not really sure I understand what that means. Thanks, Richard
Jul 9, 2010 at 3:53 PM

Larent Bugnion is a big proponent of Blendability. His Mix 10 conference talk is pretty good in this area (if I am remember it correctly). His MVVM Light toolkit is also geared at making things pretty blendable via his ViewModelLocator pattern. I like his pattern, but find that it doesn't provide answers for all scenarios. Mainly, when you have a collection of items, and want a view model that is bound to each item. My $0.02.

Jul 9, 2010 at 3:54 PM

Blendable really means that is that designers get to see data at design time. Now in Blend4 you can do this by having design time only viewmodels, but that means your Vm must have default constructor and every property must be read/write so pretty limited really. In cinch V2 I use MefedMVVM to allow support of design time data, when blend is in design time. That is what Blenable means really allowing designed to see what things will look like at runtime.

Jul 9, 2010 at 3:55 PM

I too have the same beef with Laurents pattern, by using Cinch you will get some support for this, and also as CInchV2 uses MefedMVVM there is support for that too.

Jul 12, 2010 at 2:35 PM

Here is my take as of July 12 2010. The way I see it the road moving forward the preferred SDL will be every new SL and WPF will have its UI / Flow layout done using SketchFlow via Blend. The developers will then have to wire up the UI to the Data to support that. With this in mind the only tool sets, patterns, frameworks etc. must support this software life cycle.


Step 1: gather requirements

Step 2: Use SketchFlow to get requirements into some kind of prototype without regards to the appearance of the UI (At some point make it production grade, but not yet)

Step 3: keep doing step 1 and 2 until you get a sign off you can start the data model while you are waiting for feedback on the SketchFlow. (Production grade UI can begin)

Step 4: add ViewModels to support the Views that have been created in Blend. (Use MEFedMVVM to inject the views as an example)

Step 5: Wire up the ViewModels to the Model (WCF RIA Services, DevForce, Web Services, whatever).

Step 6 : Test, depending of the size of the app use mocks.

Step 7: Deliver

With this in mind Cinch V2 seems to be a good fit. The Relay Command in MVVMLight is kind of nice might use it as well. Of course “Monkey Code Maker v 29.3.1254” could be released tomorrow and that could change everything.

Jul 12, 2010 at 3:16 PM

Interesting take, we will have to watch what happens I think.

Jul 17, 2010 at 12:01 PM

Is there any feature of cinch (or meffedmvvm) or a standalone library similar to caliburns actions?

I like the idea of it, but I want to stay with cinch and meffedmvvm and

I somehow dislike the idea of adding another big library with similar functions just for 1 feature



Jul 19, 2010 at 1:49 PM
Edited Jul 19, 2010 at 2:47 PM

No Cinch/Meffed do not offer that feature, sorry. Though to call a method can be done using one of the standard Blend behaviours available in Blend4

Jul 29, 2010 at 8:13 PM

Thanks for that hint :D