The combination of
Styles, templates, and visual states is powerful and often confusing to someone learning about XAML. Adding to the confusion is the fact that
Styles can (and often do) contain templates, and elements in templates all have their own
Styles (whether marked explicitly or inherited implicitly).
These mechanisms are so powerful, in fact, that often you can restyle an existing control as an alternative to writing your own custom control. This is great news, because restyling an existing control is usually significantly easier than writing a new control, and it can perhaps be done entirely by a graphic designer rather than a programmer.