For changing the template at runtime take a look at this should be fairly similar to what you want:
http://codingbandit.com/Blog/blog/wpf-data-templates-part-3-switching-data-templates-at-runtime/[
^]
You could easily then detect the second press of the button with a counter and then trigger the template change like the above.
Styles work in basically the same way I have two styles declared in the Window.Resources section of my window that look like this:
<Style x:Key="rField" TargetType="{x:Type Label}">...</Style><br /><br />
<Style x:Key="Field" TargetType="{x:Type Label}">...</Style><br />
And some code-behind like this (mine happens to be in VB - though converting to C# shouldn't be too hard):
<br />
lblPhone.Style = CType(Me.Resources("rField"), Style)<br /><br />
lblPhone.Style = CType(Me.Resources("Field"), Style)<br />
Hope that helps.