Converter, um die Beschreibung einer Enumeration anzuzeigen, und zurück in den Enum-Wert konvertieren, wenn ein Element aus dem Kombinationsfeld in wpf ausgewählt wird

8

Ich verwende eine Enumeration, um Werte in meine Combobox einzutragen. Ich möchte einen Konverter schreiben, der die "Beschreibung" des ausgewählten Enum-Wertes zeigt. Und wenn es ausgewählt wird, würde es den Enum-Wert zurückgeben.

Die meisten Online-Konverter haben die ConvertBack () -Methode nicht implementiert (deshalb poste ich hier).

Vielen Dank im Voraus.

    
aromore 29.11.2013, 17:31
quelle

5 Antworten

11

Hier ist ConvertBack-Methode:

%Vor%

Vollständiger Konvertercode:

%Vor%

BEARBEITEN

Hier ist meine ComboBox XAML:

%Vor%

EDIT 2:

Ich hatte ursprünglich ein falsches XAML, ich war SelectedValue an ComboBox.SelectedIndex gebunden, anstatt ComboBox.SelectedItem . Deshalb musste ich Enum.ToObject in meiner ConvertBack -Methode verwenden. Nach dem Fixieren des XAML und dem Ausführen des Samples durch den Debugger wurde mir klar, dass ich einfach value von ConvertBack method zurückgeben konnte, weil der Wert selbst von Enum type ist.

    
sthotakura 29.11.2013, 18:15
quelle
3

Ich weiß, dass dies eine alte Frage ist, aber aus irgendeinem Grund ist das ziemlich kompliziert, obwohl es scheint, als wäre es eine ziemlich häufige Aufgabe (ich mache das gerade in einer UWP-App). Mit einer Kombination aus der akzeptierten Antwort, einigen anderen Dingen, die ich gefunden habe, und ein bisschen meiner eigenen Arbeit, hier ist der einfachste Weg, den ich gefunden habe, um diese niedere Aufgabe zu erfüllen. Kurz gesagt:

  • Definieren Sie Ihr Enum mit der Einstellung der Beschreibung im Attribut Display
  • Erstellen Sie einen Konverter, der von einem enum-Wert in die Beschreibung
  • konvertiert
  • Legen Sie in Ihrem View-Modell eine Auflistung von Enum-Werten offen, aus denen der ausgewählte Enum-Wert ausgewählt werden soll, und initialisieren Sie dann diese
  • Definieren Sie einige praktische Enum-Erweiterungsmethoden
  • Abschließend noch ein paar einfache Bindungen an die ComboBox, indem Sie einfach ItemTemplate außer Kraft setzen, um den Konverter zu verwenden.

Aufzählung

%Vor%

Konverter

%Vor%

Viewmodel (teilweise)

%Vor%

Erweiterungen

%Vor%

XAML (teilweise)

%Vor%     
Joe 02.05.2016 16:25
quelle
2
%Vor%

Die Erweiterungsmethode im Beispiel könnte so aussehen:

%Vor%     
Mike Perrenoud 29.11.2013 17:45
quelle
0

Ergänzung zu den obigen Beispielen, um zu zeigen, wie die Enumeration mit Attributen dekoriert wird.

%Vor%

Übrigens, ich frage mich, warum Sie die Beschreibung zurück in enum konvertieren mussten. Wenn Sie die Enums selbst als ItemSource angeben, können Sie mithilfe der Beschreibungstechnik den Anzeigewert in der ComboBox anzeigen. Wenn ein Element ausgewählt ist, können Sie jedoch direkt eine Enumeration als ausgewähltes Element verwenden.

    
VijayKP 29.11.2013 19:30
quelle
0

Hier ist mein gutes Beispiel:

Enum-Definition:

%Vor%

Helferklasse:

%Vor%

XAML:

%Vor%     
Marc 12.02.2016 19:41
quelle

Tags und Links