A Clear, Hard to Miss, WinRT Support Update

Topics: Actions & Coroutines, Bootstrappers & IoC, Bugs, Conventions, Extensibility, Feature Requests, Framework Services, Getting Started, UI Architecture
Jul 17, 2012 at 12:16 AM
Edited Jul 17, 2012 at 12:22 AM

First off, let me apologize to anyone who has been floundering around trying to figure out what's going on here. I'm sorry about that. My life's been a bit crazy lately. (working two jobs, building my own product, preparing for a massive convention, going through the international adoption process, a bunch of personal home planning stuff...oh yeah and I put together a play set for my son that had what seemed to be 10,000 pieces)

Here's the deal:

I've been working 80 hour weeks for the last six months and have no spare time to do anything...I mean I'm an avid reader but I haven't read anything...nothing at all this entire year. My contracting has been mostly non-Xaml work and the Xaml work I have been doing has not been related to WinRT. As a result, I've had almost no time to work on expanding the support for WinRT beyond what it is now.

Current Status:

Currently, the WinRT version of Caliburn.Micro supports only the most basic functionality needed to enable MVVM. It's functionally equivalent to MVVM Light. The features it supports are: ProperyChangedBase, ObservableCollection, SimpleContainer, EventAggregator and the Execute static class.  These all worked against the Consumer Preview. I have not had time to update them to the RC. There is a pull request that contains the fixes to make it work with the RC if you want to fix it for your own use. I'll try and fix that soon, but I'm really pressed for time. Seriously.

The Future:

Come September, I think my life will go back to normal (whatever that is). At that time I hope to do more work on Caliburn.Micro. There are a number of bugs reported I will need to address first. I'll do a point release when I've got those under control. That point release will include the fix for WinRT as mentioned above. After that point release is done, I'll start working on porting the rest of Caliburn.Micro to WinRT. I can't make any promises that it will port. You need to understand that there are some fundamental features that are missing in WinRT which may make large portions of Caliburn.Micro impossible to port. I won't know for sure until I actually do it...and see if I can find workarounds for those. To even begin the port I have to implement System.Windows.Interactivity myself, because Microsoft did not port that. My suspicion is that it's not going to be possible to get that working, which will prevent porting Actions (action conventions and Coroutines go along with that). The ability to port conventions depends greatly on whether the databinding API supports the necessary features. I'm going to give it my best shot, but I can only do so much without supporting features in the platform from Microsoft. If you want Caliburn.Micro to ever be fully ported, you probably need to start talking to people at Microsoft and telling them this is important to you.  All my attempts to communicate with Microsoft about Caliburn or Caliburn.Micro have been pretty much met with silence. 

Please understand, porting to WinRT is not like port from WPF to Silverlight or from Silverlight to WP7. The differences are much, much more substantial and may render porting the really cool features of Caliburn.Micro impossible until a future version. I don know. I do have nightmare about this stuff when I sleep though ;) It's really not pleasant for me to think about all the platforms that people want support for...

Along those lines, if you can't wait until September, and you want to help me out, I would love for you to join the effort. Post here and I'll tell you exactly what/how you can help.

Jul 17, 2012 at 12:36 AM

Thanks for all your efforts Rob! I'm sure everyone who uses CM certainly appreciates all you've contributed. Hopefully those of us in the community can help pick up some slack


Jul 17, 2012 at 7:55 AM

I'd like to second this. Many thanks Rob for this awesome framework. Not only that I build my apps upon it, your framework and its source help a lot in understanding MVVM.

Unfortunately I'm not quite into WinRT yet, but I recently saw a post of a guy who ported behaviors to WinRT. Take a look here: http://blog.johanlaanstra.nl/?p=161, maybe it helps.

Jul 17, 2012 at 11:16 AM

Thanks for the link. That's probably going to be a tremendous help.

Jul 18, 2012 at 3:42 AM

Do we have a defined list of the stuff that needs to be done to make the port be functional for WinRT other than what is already done?  If we know what is needed it might help to start working on those items.  For now I haven't had the chance to put win8 on any machine cause my days have been consumed with with 14.5 hr days due to weather, moving people around the country hoping for some relief over the next few months as weather patterns start ot change....

Do we know how much will port at the same time over to winphone8?  It would be nice to know if they are only support a subset or a full set of working APIs for WP8..



Jul 19, 2012 at 8:14 PM

Unfortunately, I know almost nothing about phone 8. I hope it all just works...I don't think a can bear doing another port...I'm having a hard time every time I have to think about getting WinRT working...

Jul 25, 2012 at 8:54 PM
Edited Jul 25, 2012 at 8:58 PM

Don't kid yourself, those play sets can be a pain, obviously the most difficult thing on your list ;)

Not sure if you've seen this or if it's useful at all: http://dotnetbyexample.blogspot.com/2012/03/attached-behaviors-for-windows-8-metro.html