In my opinion, using a stack of buttons in this case is preferable. Using a TabControl
here does not seem necessary and will complicate things for you. Check this MSDN article for a great tutorial on doing what you want.
I hope this helps.
Edit. to address question about shape...
If you want to inherit the default system colours/styles for a Button you can use TemplateBindings within the button Template. For example, if you wanted to create a custom-shaped button that had the same background colour as the system one
<Button>
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid>
<!-- circle to have inherited colour -->
<Ellipse Fill="{TemplateBinding Background}" Height="50" Width="50" />
<ContentPresenter />
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
The Ellipse
will then inherit the background colour from the Button
, however it is set. To do this in an animation will be more involved, but not at all impossible...