Creating Dynamic UI using WPF

As promised, here are the content from my other session at TechEd SEA 2008. This session was titled WUX338 - Creating Dynamic UI with Windows Presentation Foundation. This session was not solely mine to present, I did a tag-team with the Lead Architect from Entellium Technologies. We invited Entellium to do a quick demo of their sexy-looking Rave client at TechEd SEA keynote, and this session was meant to divulge more details about some of the things they did under the hood to provide animation when stack panels are resized or reordered. This is great considering they are really sharing their engineering excellence.

I took this opportunity to also share the Composite Application Guidance for WPF - June 2008 release. As I have emphasized this during my breakout session, I will say it again in my blog, the application block and patterns used in this example was a modification of the Stock Trader RI application, and it was really meant to exaggerate how modules could be dynamically loaded onto a shell application to make up the look-and-feel of the application. In the modified Stock Trader RI, all I did was to create the following to demonstrate the points across to my audience:

  • Create a new region on the shell, AdsRegion
  • Create an AdsModule
  • Created the interfaces for View and Presenter, and a concrete class to represent the Model, which is Advertisement
  • Implemented derived classes for the View and Presenter interfaces.
  • Created the AdsModule, and updated the shell bootstrapper to load up the AdsModule statically. However this may well be a dynamic loading of the modules by means of a configuration file or a directory lookup. If you want to find out how to achieve that, there are QuickStart samples that show exactly that.

When I checked out the Composite WPF app block, I fell in love with it. In many ways, those were exactly the requirements of most of the ISVs I've been working with. Essentially the question is how do they cater to very dynamic, or fluid UI that may be capture in some form of metadata, and the application UI framework should be intelligent enough to render this during runtime. In other cases, my ISVs are looking at designing their UI (which may consists of hundreds of screens or forms, and store that as metadata in a local storage, and the shell application should be able to load it up on the fly).

William has also promised to share the code for the PanelAnimator class as well as the Visual Studio project he had demonstrated during the session. However he's on vacation until Aug 22, and once he's back, I'll get the bits from him, to upload here or to link to what he has posted.

Meanwhile, he's the project and the slides I presented at this session.