Более гибкий вариант ответа Рэйчел - использовать resourceKey для BasedOn.
Таким образом, вместо:
<Style TargetType="{x:Type FrameworkElement}">
<!-- Shared Setters -->
</Style>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />
Сделайте что-то вроде:
<Style x:Key="commonStyle" TargetType="{x:Type FrameworkElement}">
<!-- Shared Setters -->
</Style>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource commonStyle}" />
Это дает больше возможностей, поскольку некоторые стили могут быть основаны на commonStyle, а некоторые, например, на commonStyle2, где и commonStyle, и commonStyle2 имеют FrameworkElement в качестве целевого типа.