5 Stimmen

Wenn ich WPF-Vorlagen überschreibe, muss ich dann die Vorlage jedes Themas separat überschreiben?

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>]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X