
This post continues our series on the Actipro Themes being added for all our WPF controls in the upcoming 2011.2 version.
The previous post gave an introduction to Actipro Themes and discussed how we have implemented styles/templates for native WPF controls that look great with our custom WPF controls. In many cases, our styles/templates look the same as the related system theme. However in some cases such as menus, toolbars, statusbars, etc. we’ve spruced things up a bit to provide a more Visual Studio-ish look for the native controls. These customized styles/templates can be applied app-wide with a single line of code, or instead can be used on a case-by-case basis if desired.
Achieving Consistency
A main goal of Actipro Themes is to make native WPF controls in your apps look great when paired with any of Actipro’s custom controls, and when multiple Actipro products are used together.
In 2011.1 and past versions, each of our custom control products used to define their brush asset resources in their own assemblies. Since we have many product assemblies, over time this could of course lead to some inconsistent colors within a theme between multiple products.
There were cases where some brushes were duplicated such as for the non-glass Window brushes used by both Docking/MDI and Ribbon.
Finally, if Actipro products were set to use an Office theme, they would render great, however may not mix well next to native WPF controls since those would still be using the system theme.
The solution to all of these issues is to have a common asset pool.
Common Asset Pool
Our approach with Actipro Themes in 2011.2 was to consolidate all brush, thickness, etc. assets for a theme into a single place. We call this the common asset pool.
What we’ve done is have developed well over 800 asset resources for each of the system and Office themes we support. Then we made all of our custom control product styles/templates as well as our native WPF control styles/templates use those same assets. You can imagine that this took quite a while to do.

More...