2011-01-25 2 views
0

J'ai une zone de liste déroulante avec une entité ObservableCollection liée à ItemsSource. Comme ceci:WPF ComboBox Comportement de recherche de texte modifiable

Key Desc1 Desc2 
C0001 myDesc myDesc 
D0001 myDesc myDesc 
A0001 myDesc MyDesc 

le combobox est défini ainsi:

<ComboBox 
    IsEditable=True 
    DisplayMemberPath="Key" 
    SelectedValuePath="Key" 
    ItemsSource="{Binding Path=MyList, Mode=OneWay}" /> 

Maintenant, j'ai ce problème ...

Si je tape un caractère modifiable sur zone de texte vide de combobox, le premier élément que "commence avec" le caractère tapé est apparié. Donc, si je tape "C", le selecteditem est l'élément "C0001" ... et j'éviterais cela!

Je voudrais une logique de recherche différente qui trouve l'élément sélectionné en fonction du texte intégral saisi. De cette façon:

Text Typed  SelectedItem 
C     null 
C0    null 
C00    null 
C000    null 
C0001    [C0001, myDesc, myDesc] OK! 

Est-ce possible? Comment puis-je faire?

Répondre

0

Ce comportement a toujours été le même pour Combos sous Windows. Si vous voulez faire quelque chose comme ça, vous êtes probablement mieux avec un champ de recherche et une liste de résultats sélectionnables.

Alternativement, le TextBox prend en charge différents modes de suggestion de saisie semi-automatique, mais vous voulez aussi une liste déroulante. (non, ce n'est pas le cas).

Cette post fait un coup d'accoupler les deux, c'est plutôt soigné.

+0

La question est à propos de WPF pas Winforms! –

+0

Oh oui, la boîte de texte pour WPF n'a rien de tout cela ... Désolé pour la confusion là-bas, c'est tôt! – Tom

+0

Il n'y a pas moyen de dépenser la logique de recherche de remplacement de la base ComboBox pour l'élément sélectionné? –

Questions connexes