WPF IsEditable=true ComboBox gefüllt mit Objekten zeigt die ToString() als das ausgewählte Element
Wpf-combo-box erlaubt die Bearbeitung, und das ist in Ordnung, wenn alle Ihre combo-box-Elemente sind Zeichenketten, oder haben eine ToString () - Methode definiert.
Wenn Sie ein Element auswählen, wird es als Text angezeigt, es nicht mit einem DataTemplate es nur ruft ToString() auf das Element, das ausgewählt ist.
Bekomme ich eine Liste der Elemente, die in meiner combo drop-down-formatierte mit meinem Element template, wenn ich die Option erhalte ich den Namen des Objekts an, d.h. MyNamespace.MyObjectName
Einige Lösungen wurden
- verwenden ValuePath zu binden, eine Eigenschaft
auf das Objekt, aber wenn Sie benötigen
Ihre Anzeige auf mehr als eine
diese, Pech. - implementieren Sie die Methode ToString() auf
Ihr Objekt
gibt es einen anderen Weg um?
- ja, die zweite Methode funktioniert einwandfrei.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie tun dies ausschließlich in Xaml
Der Vorteil ist, dass Sie definieren können, und ändern dies jedoch, die Sie in Ihrem XAML-Code ohne code-behind. Sie binden die ItemsSource zu Ihrer Sammlung von Objekten, und dann setzen Sie den Pfad, auf deren Grundlage Sie Ihre Suche auf TextSearch.TextPath. Dann, innerhalb Sie benutzerdefinierte ItemTemplate Sie können binden Sie den TextBlock, um etwas anderes außerhalb des Objekts ToString-Methode.
Können Sie eine IValueConverter zu konvertieren, das "Objekt" in eine Zeichenfolge und zurück. Siehe Beispiel-code in der IValueConverter-link für details.