Compose your WPF styles just like in CSS.
Why not just use that code? It works, right?
Sort of. When you run the code everything works as expected. Unfortunately, the designer is a different story. Controls look as if there are no styles applied.
With the attached property you get pretty good designer support. I say pretty good because it does not update when you change one of the styles properties without a build. You could also make a change to the attached property, wait for the designer to catch up, then change it back.
Given a set of styles such as these
<Style x:Key="BigText" TargetType="TextBlock">
<Setter Property="FontSize" Value="36"/>
</Style>
<Style x:Key="CenteredText" TargetType="TextBlock">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
<Style x:Key="GreenText" TargetType="TextBlock">
<Setter Property="Foreground" Value="Green"/>
</Style>
<Style x:Key="PurpleText" TargetType="TextBlock">
<Setter Property="Foreground" Value="Purple"/>
</Style>
You can combine these styles into a merged style and set it to a control like so
<TextBlock Text="MultiStyle Sample App"
st:Multi.Styles="BigText CenteredText GreenText PurpleText"/>
This results in