Jak rozszerzyć zamiast zastępować style WPF

Chcę użyć niestandardowego motywu w mojej aplikacji i o ile wiem, mogę to zrobić, używając słownika zasobów i odwołując się do niego w App.xaml. Style zastąpiłyby takie ustawienia domyślne jak:

<Style TargetType="{x:Type Label">
    <Setter Property="Foreground" Value="Green" />
</Style>

Domyślam się, że domyślny styl etykiety jest nadpisywany tymi samymi wartościami, ale wszystkie moje czcionki etykiet są zielone. Problem zaczyna się, gdy chcę ponownie ustawić jedną etykietę gdzieś. Kiedy chcę zmienić inną właściwość w mojej siatce w ten sposób

<Grid.Resources>
    <Style TargetType="{x:Type Label">
        <Setter Property="FontSize" Value="28" />
    </Style>
</Grid.Resources>

Wszystkie etykiety wewnątrz mojej siatki tracą kolor pierwszego planu i mają ponownie domyślną (nie zastąpiłem domyślnych w poprzednim kroku?). Po kilku próbach dowiedziałem się, że aby to zrobić poprawnie, muszę dodać inną właściwośćStyle deklaracjaBasedOn={StaticResource {x:Type Label}}" i to działa. Jest to dla mnie trochę dziwne, ponieważ teraz będę musiał powtórzyć ten sam kod BasedOn w całej aplikacji i to nie tak działa stylizacja - powinno to być zrobione automatycznie! Na przykład w HTML + style CSS są dziedziczone i scalane, aw WPF są zastępowane ...

Zauważ, że gdy nie używam żadnych stylów, nadal uzyskują swój wygląd od jakiegoś systemu (motywy systemu?). Jak mogę im powiedzieć, żeby szukali domyślnych gdzieś indziej, więc bez dodatkowego kodu na stylach będą myśleć, że domyślnie powinny być zielone?

Czy w jakiś sposób mogę zautomatyzować ustawienie właściwości BasedOn? A może lepiej jest to zrobić w sposób nadmierny?

questionAnswers(2)

yourAnswerToTheQuestion