WPF: ComboBox zeigt "(Namespace). (Klassenname)" anstelle von Daten an

8

Ich möchte mein ComboBox in XAML erhalten, um an meine List Sammlung von benutzerdefinierten Objekten im Code dahinter zu binden.

Momentan listet die ComboBox für jeden Eintrag dpwpf.Contact auf, was mein {namespace}.{classname} ist.

Was muss ich in das XAML eingeben, um es aufzulisten, z. Nachname + Vorname?

Ich weiß, dass es so etwas wie {Binding Path=... Value=...} ist, aber ich verstehe es nicht.

XAML:

%Vor%

Code dahinter:

%Vor%

Antwort:

%Vor%     
Edward Tanguay 02.02.2009, 15:02
quelle

4 Antworten

7

Sie können die Methode ToString von Contact überschreiben oder in WPF eine DataTemplate definieren.

%Vor%

Damit können Sie definieren, wie ein Contact -Objekt irgendwo im Fenster erscheinen soll. Wenn Sie dies auf ComboBox beschränken möchten, können Sie DataTemplate nur den ComboBox -Ressourcen hinzufügen.

Siehe auch Was bedeutet "{Binding}"? von Bea Stollnitz

    
Cameron MacFarland 02.02.2009, 15:18
quelle
6

Fügen Sie das einfach in Ihrem ComboBox-Tag (XAML-Code)

hinzu %Vor%

ToString() Modifikation betrifft alle zukünftigen Fälle, die Sie brauchen, ich empfehle Ihnen das nicht.

Siehe das Beispiel: Ссылка

    
Rafa 27.08.2010 10:14
quelle
4

Was der Bindemechanismus tut, ruft ToString () für den Typ auf, der gebunden wird. Weil ich denke, dass Sie nicht ToString () überschreiben, wird es nur so der namespace.type statt etwas Nützliches.

Wie rebellisch heißt, können Sie DisplayMember verwenden, um der Bindung mitzuteilen, dass eine Eigenschaft dieses Namens für den Anzeigewert verwendet werden soll, oder Sie können ToString () wie folgt überschreiben, um Ihre benutzerdefinierte Eigenschaft anzuzeigen.

%Vor%     
Ray Booysen 02.02.2009 15:16
quelle
2

Sie müssen DisplayMember="TheValue"

verwenden

Sie können dies in der XAML oder in der CLR hinzufügen Beachten Sie auch Ihre Bindung in cose und nicht durch den XAML. Ich denke, das bezieht sich auf eine Ihrer Fragen. welche die Bindung über ObjectDataProvider implementiert benutze das Beispiel und füge das DisplayMemeber="memeber" im XAML

hinzu

HTH, Eric,

    
user61477 02.02.2009 15:09
quelle

Tags und Links