Hi Gordon,
Just to elaborate on the use of code over mcml -
There's quite a few ways this can be used - but the idea in general is that instead of instantiating some of the MCML UI classes from the MCML layer - I instantiate them via managed code. Additionally instead of handling Command.Invoked, ViewChoice.Changed etc events via MCML Rules - again these events are handled in managed code.
For a simple usage - instead of creating a Command Object in the <Properties> section of a UI - my managed code class would create and return a Command object as a property (and retain a reference) - which is read in by the MCML layer. This would then give me the ability to handle the Invoked() events from within my managed code (by adding eventhandler for the Invoked method) - instead of having to create complex rules sections in MCML. This has the additional benefit that it then eliminates the requirement to pass a lot of classes into child UI's - ie. we can then send just the Command to a child UI, and when invoked - it can make changes to the parent ModelItem class behind the scenes (which may be then reflected in the parent class and delivered to the UI by firepropertychanged event or manipulating an existing ArrayListDataSet).
For a more advanced usage scenario - instead of calling new MCML Pages with native .NET parameters (ie. Strings, Int32's etc) - I instantiate an entire class and send that to the new Page as a single parameter. This way I don't have to mess around with instantiating a new Managed Class and loading it with the Page Properties before it can be used. (and there are many other benefits such as being able to track page enter/leave state etc.).
<UI Name="MyPage">
<Properties>
<a:MyClass Name="MyClass" MyClass="$Required"/>
</Properties>
etc etc..
<Content> etc.. etc..
<Text Content="[MyClass.PageTitle]" .... > ....
<Repeater Source="[MyClass.HeaderItems]" ... > ....
<Content>
</UI>
So anyhow there's a huge amount of cool stuff you can do - as well as overcome many of the restrictions of MCML (and replace it with more predictable/simpler .NET code) - and drastically reduce MCML page size/complexity (which becomes a really big win doing the sort of stuff seen in the video).
Anyhow - hope this explains it a little better.
cheers
Niall