I know this post is super old, but I have an answer that's surprisingly missing from the above and is also much simpler than most.
<Button>
<Button.Resources>
<Style TargetType="Border">
<Setter Property="CornerRadius" Value="5"/>
</Style>
</Button.Resources>
</Button>
Since the default ControlTemplate for the Button control uses a Border element, adding a style for Border to the Button's resources applies that style to that Border. This lets you add rounded corners without having to make your own ControlTemplate and without any code. It also works on all varieties of Button (e.g. ToggleButton and RepeatButton).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…