So erweitern Sie WPF-Stile, anstatt sie zu überschreiben
Ich möchte ein benutzerdefiniertes Design in meiner Anwendung verwenden. Soweit ich weiß, kann ich dies erreichen, indem ich das Ressourcenwörterbuch verwende und in App.xaml darauf verweise. Stile würden die Standardeinstellungen wie folgt überschreiben:
<Style TargetType="{x:Type Label">
<Setter Property="Foreground" Value="Green" />
</Style>
Wie ich denke, wird der Standard-Beschriftungsstil mit denselben Werten überschrieben, aber alle meine Beschriftungsschriften sind grün. Das Problem beginnt, wenn ich wieder irgendwo ein Etikett stylen möchte. Wenn ich eine andere Eigenschaft in meinem Raster wie folgt ändern möchte
<Grid.Resources>
<Style TargetType="{x:Type Label">
<Setter Property="FontSize" Value="28" />
</Style>
</Grid.Resources>
Alle Beschriftungen in meinem Raster verlieren ihre Vordergrundfarbe und haben wieder die Standardfarbe (habe ich die Standardeinstellungen im vorherigen Schritt nicht überschrieben?). Nach einigen Versuchen fand ich heraus, dass ich dazu eine weitere Eigenschaft hinzufügen mussStyle
ErklärungBasedOn={StaticResource {x:Type Label}}"
und es funktioniert. Das ist etwas seltsam für mich, da ich jetzt den gleichen BasedOn-Code in der gesamten App wiederholen muss und das Styling nicht so funktioniert - das sollte automatisch geschehen! Beispielsweise werden in HTML + CSS Stile vererbt und zusammengeführt und in WPF werden sie ersetzt ...
Beachten Sie, dass wenn ich keine Stil-Steuerelemente verwende, deren Aussehen immer noch von irgendwoher kommt (System-Designs?). Wie kann ich ihnen sagen, dass sie nach Standardeinstellungen suchen sollen, damit sie ohne zusätzlichen Code für Stile der Meinung sind, dass sie standardmäßig grün sein sollten?
Kann ich das Festlegen der BasedOn-Eigenschaft auf irgendeine Weise automatisieren? Oder gibt es vielleicht ein besseres, dies übermäßig zu tun?