Sono ansioso di trovare un codice solido (libero, Open Source o tutorial/esempio) per fare in modo che un Combobox WPF esegua la selezione automatica/autofilter mentre l'utente digita. Ma tutto quello che ho provato finora ha avuto qualche tipo di problema ...WPF Combobox con auto-completamento/filtro automatico?
A Reusable WPF Autocomplete TextBox venuto vicino, ma non riesco a farlo work with more than one filter (ulteriori informazioni here).
WPF autocomplete textbox/combobox non funziona per me perché eredita da UserControl e quindi non supporta i DataTemplates di cui ho bisogno (per mostrare/selezionare il valore di una proprietà per un oggetto con proprietà multiple).
Automatically Filtering a ComboBox in WPF non ha funzionato perché non sembra mai trovare la parte EditableTextBox del codice ComboBox ereditato (tramite
(TextBox)base.GetTemplateChild("PART_EditableTextBox")
che sembra restituire sempre null).Building a Filtered ComboBox for WPF si blocca solo in un ciclo di aggiornamento, quindi trabocca lo stack dopo aver digitato solo poche lettere.
Altre cose che ho considerato:
so che Windows Forms' Combobox control has AutoCompleteMode e ho potuto embed it in WPF, ma non riesco a immaginare che avrebbe giocato molto bene con i miei associazioni di dati WPF.
Forse è troppo complesso e ho bisogno di semplificare, magari costruendo ObservableCollections unidimensionali (a singola proprietà) per il ComboBoxen ... Tuttavia, la sfida di applicare più filtri (un set per il valore di un altro controllo, e uno da quello che l'utente sta digitando) a più controlli utilizzando viste differenti dello stesso DataSet richiederebbe una quantità ridicola di potenza di elaborazione per distruggere e ricostruire l'elenco ogni volta che l'utente digita un carattere!
Quindi ... sono alla fine. Eventuali suggerimenti?
Mi piacerebbe essere in grado di cercare su più campi (ad esempio "valore" e "descrizione "), essere case-insensitive, ecc .-- ma è un PITA. Tornando indietro, perché funziona come previsto con templates et al. – ewall
È possibile filtrare su più campi creando un'altra proprietà e unendo insieme i campi. Quindi imposta il campo di ricerca su quello. Poiché ha tutti i campi combinati di cui hai bisogno, la ricerca funziona. Un po 'un trucco, ma ha fatto il lavoro. – Kelly
@wall puoi provare https://www.nuget.org/packages/THEFilteredComboBox/ questo abbiamo creato questo controllo perché usare le proprietà di cui sopra non era abbastanza –