Je vous présente mon problème succinctement :

-J'ai besoin de sélectionner une ville (CP/NOM) à partir d'une chaîne de caractère pouvant correspondre au nom ou bien au cp.

-La sélection se fait bien sauf su les noms de ville correspondant à plusieurs CP. Après recherche j'ai trouver ceci : Problème de sélection dans un AutoCompleteBox lorsque le ValueMemberBinding n'est pas unique

Pour corriger ceci, il faut modifier dans les sources du toolkit (fichier AutoCompleteBox.cs) la méthode UpdateTextCompletion

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
...
else
{
  // Un item de la listbox a été sélectionné
  if ((SelectionAdapter != null) && (SelectionAdapter.SelectedItem != null))
  {
    // Car la recherche par texte fait perdre l'objet sélectionné dans le cas de doublons
    newSelectedItem = SelectionAdapter.SelectedItem;
  }
  else
  {
     // Perform an exact string lookup for the text. This is a 
     // design change from the original Toolkit release when the 
     // IsTextCompletionEnabled property behaved just like the 
     // WPF ComboBox's IsTextSearchEnabled property.
     //
     // This change provides the behavior that most people expect
     // to find: a lookup for the value is always performed.
     newSelectedItem = TryGetMatch(text, _view, AutoCompleteSearch.GetFilter(AutoCompleteFilterMode.EqualsCaseSensitive));
  }                 
}
Mais cette solution ne me convient pas car je n'aime pas modifier les codes sources qui ne m'appartiennent pas.

-J'ai donc crée un champ VILLE_NOM_CP de la façon suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
 
namespace Projet1.Web
{
    public partial class VILLE
    {
        public string VILLE_NOM_CP
        {
            get
            {
                return VILLE_NOM + " (" + VILLE_CP + ")";
            }
            set
            {
 
            }
        }
    }
}
-Mon problème à lieu sur le chargement de la liste de l'AutoCompleteBox.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void vILLE_Populating(object sender, PopulatingEventArgs e)
        {
            vILLE_ENLDomainDataSource.Clear();
            e.Cancel = true;
            AutoCompleteBox sd = sender as AutoCompleteBox;
            vILLE_ENLDomainDataSource.SortDescriptors.Clear();
            vILLE_ENLDomainDataSource.FilterDescriptors.Clear();
            vILLE_ENLDomainDataSource.SortDescriptors.Add(
                new SortDescriptor("VILLE_NOM", System.ComponentModel.ListSortDirection.Ascending));
            vILLE_ENLDomainDataSource.SortDescriptors.Add(
                new SortDescriptor("VILLE_CP", System.ComponentModel.ListSortDirection.Ascending));
            vILLE_ENLDomainDataSource.FilterDescriptors.Add(
                new FilterDescriptor("VILLE_NOM_CP", FilterOperator.StartsWith, vILLE_NOM_ENLAutoCompleteBox.Text));  /// Il m'indique ici que le champ n'existe pas
            vILLE_ENLDomainDataSource.FilterDescriptors.Add(
                new FilterDescriptor("VILLE_CP", FilterOperator.StartsWith, vILLE_NOM_ENLAutoCompleteBox.Text));
            vILLE_ENLDomainDataSource.FilterOperator = FilterDescriptorLogicalOperator.Or;
            vILLE_ENLDomainDataSource.Load();
        }
Si quelqu'un à une idée, voir même une solution totalement différente de ma piste de recherche.

Merci d'avance.