Ich würde gerne sagen können
%Vor% und um es als True
auflösen zu lassen, wenn der Wert int
gleich (int)MyEnum.Value
Ich weiß, dass ich eine Converter
erstellen könnte, die (MyEnum)intValue
zurückgibt, aber dann müsste ich einen Konverter für jeden Enum-Typ erstellen, den ich in meinen DataTriggers verwende.
Gibt es eine allgemeine Möglichkeit, einen Konverter zu erstellen, der mir diese Art von Funktionalität bietet?
Es ist möglich, einen Konverter zwischen den Enumerationswerten und den zugrunde liegenden Integraltypen auf wiederverwendbare Weise zu erstellen - das heißt, Sie müssen keinen neuen Konverter für jede Enum-Art definieren. Es sind genug Informationen für Convert
und ConvertBack
vorhanden.
Wenn dieser Konverter aufgerufen wird, wird der Wert des Werts zwischen dem Wert von int / enum basierend auf den Werten value
und targetType
umgedreht. Es gibt keine fest codierten Aufzählungstypen.
Sie könnten auch andersherum gehen und die Enumeration mit einer benutzerdefinierten Markup-Erweiterung in int für den Wert konvertieren.
Beispiel
%Vor%EnumToIntExtension
%Vor%Wir wollten das auch in der Vergangenheit ein paar Mal machen, also haben wir verschiedene Erweiterungsmethoden (auf int, long usw.) entwickelt, um uns zu helfen. Der Kern von all diesen wird in einer einzigen statischen generischen TryAsEnum-Methode implementiert:
%Vor%Diese Implementierung behandelt Enums mit jedem zugrunde liegenden Typ sowie mit dem Attribut [Flags] definierte Enums.
Sie könnten einen ToString () für den int-Wert ausführen und diesen dann an die statische Enum.Parse- oder Enum.TryParse-Methode übergeben, die den gewünschten Enum-Typ verwendet und den entsprechenden Wert zurückgibt.
Dies ist jedoch keine perfekte Lösung, da es nicht mit Ganzzahlen arbeitet, die die binäre ODER-Verknüpfung mehrerer Aufzählungswerte darstellen
Tags und Links wpf c# converter enums datatrigger