У меня (в моем приложении WPF) стандартные (базовые) стили, определенные в ResourceDictionary в App.xaml (в стартовом проекте). Например, для кнопки следующим образом.
<Style TargetType="Button">
<Setter Property="Margin" Value="5"/>
<Setter Property="FontWeight" Value="DemiBold"/>
<Setter Property="FontSize" Value="16"/>
</Style>
Во всех представлениях я использую (по умолчанию) этот общий стиль (автоматически наследуется)! Когда мне нужно изменить или добавить какое-либо свойство в стиле по умолчанию (определенном в App.xaml), я создаю новый стиль на основе стиля по умолчанию.
<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<!-- change -->
<Setter Property="Margin" Value="10" />
<!-- add -->
<Setter Property="Foreground" Value="Red" />
</Style>
Когда мне нужно скрыть или строго переопределить стиль по умолчанию (в некоторых представлениях), я создаю новый стиль (на основе ничего).
<Style TargetType="Button"/>
Конечно, вы можете продолжить наследование в App.xaml или в специальном представлении. Вы можете основывать новый стиль с именем на стиле по умолчанию и использовать новый стиль по имени. Например, стиль RedButton и GreenButton.
<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}" x:Key="RedButton">
<Setter Property="Foreground" Value="Red" />
</Style>
<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}" x:Key="GreenButton">
<Setter Property="Foreground" Value="Green" />
</Style>
Etc ...
ПРИМЕЧАНИЕ. Вместо того, чтобы определять свой стиль в App.xaml, вы можете использовать автономную библиотеку (dll) только со стилями и ResourceDictionary из вашей библиотеки в App.xaml ResourceDictionary.MergedDictionaries.