A prototype tool for designers and developers: converting XAML to ISM themes and back again

Posted 8 March 2009  

The Silverlight Toolkit contains implicit style management features that let you create a nice theme ā€“ buttons, checkboxes, you name it ā€“ and have it automatically applied to an application. Nearly half a year ago, I worked with Mehdi to create a rather simple, but functional, tool prototype for working with Xaml theme files and ISM-consumable implicit style definitions. Great stuff for designers, this prototype tool enables designers to use Blend day-to-day for getting immediate feedback and excellent tooling support, while being able to round-trip themes, from Blend to ISM to Blend again. This tool is not guaranteed to be lossless. Use it at your own risk. It will take a XAML file that Blend appreciates (details on Mehdi's blog):
  • No x:Key attributes
  • References to other styles by key name become fully qualified resource lookups: from ScrollViewerStyle to System.Windows.Controls.ScrollViewer
  • There are some assumption about naming
  • Adding explicit references to other styles
... and convert it into an ISM theme. Today Iā€™m finally blogging a prototype version of the app, a work-in-progress, hoping that maybe others will have the time to make better use of it than I have. I have grand visions for the tool: add a file system watcher, monitor file saves in Blend, and then immediately msbuilding updated ISM theme assembly files. Updating sample apps behind the scenes. Real-time theme previews. None of those grand features are in the download. Give it time. Download a VS'08 console project with the source (Ms-PL) Read Mehdi's guide on ISM styles To run, use either: ToolkitTheme.exe App.xaml /t:ism MyIsmTheme.xaml ToolkitTheme.exe MyIsmTheme.xaml /t:blend App.xaml Since this is a proof-of-concept prototype, I'm only releasing source for now, assuming you're a developer at heart - no designer binaries. Let me know if you have any feedback on the tool!

Jeff Wilcox is a Principal Software Engineer at Microsoft in the Open Source Programs Office, helping Microsoft scale to 10,000+ engineers using, contributing to and releasing open source.

comments powered by Disqus