Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
In the last chapter we used property and event triggers to define the visual behavior of a control. Inside a control template (and unfortunately only inside a control template) you have another, more powerful option: the VisualStateManager. Like control parts, the visual states that are supported by a control are defined by its control contract, using the TemplateVisualState attribute, which defines both the state and the state group:
[TemplateVisualState(Name="Normal", StateGroup="CommonStates")]