mam (W mojej aplikacji WPF) domyślne (baza) style zdefiniowane w ResourceDictionary w App.xaml (w projekcie starcie). Na przykład dla przycisku w następujący sposób.
<Style TargetType="Button">
<Setter Property="Margin" Value="5"/>
<Setter Property="FontWeight" Value="DemiBold"/>
<Setter Property="FontSize" Value="16"/>
</Style>
We wszystkich widokach używam (domyślnie) tego ogólnego stylu (automatycznie dziedziczony)! Kiedy muszę zmienić lub dodać właściwość w domyślnym stylu (zdefiniowanym w App.xaml), tworzę nowy styl oparty na domyślnym stylu.
<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<!-- change -->
<Setter Property="Margin" Value="10" />
<!-- add -->
<Setter Property="Foreground" Value="Red" />
</Style>
Kiedy potrzebuję ukryć lub zdecydowanie przedefiniować styl domyślny (w pewnym widoku) tworzę nowy styl (na podstawie niczego).
<Style TargetType="Button"/>
Możesz oczywiście kontynuować dziedziczenie w App.xaml lub w określonym widoku. Możesz zastosować nowy styl o nazwie w domyślnym stylu i użyć nowego stylu według nazwy. Na przykład styl RedButton i 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 ...
UWAGA: zamiast określić swój styl w App.xaml można użyć osobnego biblioteki (DLL) tylko style i ResourceDictionary z biblioteki do ResourceDictionary.MergedDictionaries App.xaml .