У меня есть (В моем 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 ,