Ich habe eine Anforderung, einen sehr kleinen Teil der WPF ComboBox-Vorlage zu ändern.
Wenn ich eine Kopie der bestehenden Vorlage für das Luna-Thema nehme und die Änderung vornehme, funktioniert zunächst alles gut. Aber wenn der Benutzer ein anderes Thema hat, meine ComboBox
behält das benutzerdefinierte Thema (das offensichtlich auf Luna basiert) und sieht daher deplatziert aus.
Gibt es eine Möglichkeit, nur Teile einer Vorlage zu überschreiben, so dass der Großteil der Vorlage das Windows-Thema beibehält?
Ich stelle fest, dass Teile der Vorlage einen mwt-Namensraum mit einem ausdrücklichen Verweis auf Luna definieren:
xmlns:mwt="...blah blah...=PresentationFramework.Luna"
Vielleicht gibt es eine Möglichkeit, diesen mwt-Namensraum auf das aktuelle Thema zu beziehen und nicht speziell auf das Luna-Thema?
Oder muss ich für jedes Thema eine eigene Kopie der Vorlage erstellen? Und was passiert, wenn MS ein neues Thema erstellt? Muss ich dann meine Vorlage aktualisieren, um es zu unterstützen?
(Der Teil, den ich ändere, bezieht sich nur auf die TextBlock
angezeigt, wenn das Kombinationsfeld geschlossen wird. Ich ändere nicht das Dropdown oder die Schaltfläche. Idealerweise würde ich einfach die SelectionBoxItemTemplate
über die ComboBox
, aber das ist schreibgeschützt, so dass ich, soweit ich weiß, die gesamte Steuervorlage überschreiben muss, um Änderungen vorzunehmen).
[Ähnliche Frage, aber keine Antworten: <a href="https://stackoverflow.com/questions/980055/adjust-a-control-template-and-still-respect-the-theme-of-the-os">Eine Kontrollvorlage anpassen und trotzdem das Thema des Betriebssystems respektieren? </a>]