UI for portions of your WPF application. There are several template types available in WPF (ControlTemplate, DataTemplate, HierarchicalDataTemplate, and ItemsPanelTemplate). Control templates Underlying all UI controls in WPF is a new composition model. Every control is composed of one or more ‘visuals’. These visual sub-elements are turned into a hierarchical visual tree by WPF and eventually rendered by the GPU. Because WPF controls are not wrappers for standard Windows controls their UI can be radically changed without affecting the normal behavior of the control. Every control in WPF has a default ‘template’ that defines its visual tree. The default template is created by the control author and is replaceable by other developers and designers. The substitute UI is placed within a ControlTemplate. Data templates WPF has a flexible data binding system. UI elements can be populated and synchronized with data from an underlying data model. Rather than showing simple text for the bound data, WPF can apply a data template (replaceable UI for .NET types) before rendering to the visual tree. Animations WPF supports time-based animations, in contrast to the frame-based approach. This decouples the speed of the animation from how the system is performing. WPF supports low level animation via timers and higher level abstractions of animations via the Animation classes. Any WPF element property can be animated as long as it is registered as a dependency property. Animation classes are based on the .NET type of property to be animated. For instance, changing the color of an element is done with the ColorAnimation class and animating the width of an element (which is typed as a double) is done with the DoubleAnimation class. Animations can be grouped into Storyboards. Storyboards are the primary way to start, stop, pause and otherwise manipulate the animations. Animations can be triggered by external events, including user action. Scene redraws are time triggered. Presentation timers are initialized and managed by WPF. Animation effects can be defined on a per-object basis, which can be accessed directly from XAML markup. Imaging WPF can natively access Windows Imaging Component (WIC) code and APIs allowing developers to write image codecs for their specific image file formats. Effects WPF 3.0 provides for Bitmap effects (BitmapEffect class), which are raster effects applied to a Visual. These raster effects are written in unmanaged code and force rendering of the Visual to be performed on the CPU and not hardware accelerated