Pros and Cons
I believe that the sweet spot of WPF-CPS may be for tools, prototypes, single-page-applications (SPA), and smaller desktop apps (similar to WinRT apps.) It could possibly be used for a full-blown LOB Enterprise app but in the areas where it is rough around
the edges, you could end up possibly writing inelegant code or treading new paths?
1. WPF-CPS is lightweight
2. Easy-to-learn (compared to XAML)
3. You may leverage OOP best practices, abstract away code for re-use, etc.
4. Provides for rapid-app-development (RAD)
5. It is integrated with Reactive Extensions (Rx)
6. It supports Selectors (which is much better than navigating the Visual Tree and Logical Tree?)
7. Since it is 100% code-behind, it's merely another API to learn
8. It may be concise, particularly if you write WPF-CPS using F#
9. It is fun and hopefully straight-forward
10. It is synchronous by design. WPF-CPS aims to be the best at lightweight, synchronous, rapid desktop app development. If you want async, perhaps check out WinRT or http://www.reactiveui.net/ . . .
1. WPF-CPS doesn't yet officially support the Ribbon (no Ribbon IParent yet)
2. It hasn't been battle-tested in the same way that XAML apps have
3. It may be less performant or consume more memory? WPF is already slow, WPF-CPS may be slower?
4. It doesn't have common issues posted on a million forums
5. It has rather weak support for Menus, Tab Items, and "Prism"-like Regions
(These haven't been streamlined or optimized yet . . . too much code in the Demo App)
6. It doesn't have as complete architectural pattern examples like MVVM
(WPF Composites Contrib includes a start but the MVP example there could be better?)
7. It doesn't have official third-party vendor support yet
(although you could likely re-purpose existing WPF libraries for use with WPF-CPS?)
8. It doesn't support as many controls as XAML
9. It doesn't work with Expression Blend
10. It is not asynchronous by design. There is no async-await integration or threadsafe support for its internal dictionaries. (There's nothing wrong with making async web service calls, but you'll always need to invoke back to the UI thread in working
So, I encourage you to use the right tool for the job. WPF-CPS has its merits and may shine in the right context.