Je sais que c'est une très vieille question mais je veux ajouter une réponse que j'ai trouvée.
D'abord, vous avez besoin d'un gestionnaire pour votre gestionnaire d'événements TextChanged
normal pour le TextBox
:
private bool InProg;
internal void TBTextChanged(object sender, TextChangedEventArgs e)
{
var change = e.Changes.FirstOrDefault();
if (!InProg)
{
InProg = true;
var culture = new CultureInfo(CultureInfo.CurrentCulture.Name);
var source = ((TextBox)sender);
if (((change.AddedLength - change.RemovedLength) > 0 || source.Text.Length > 0) && !DelKeyPressed)
{
if (Files.Where(x => x.IndexOf(source.Text, StringComparison.CurrentCultureIgnoreCase) == 0).Count() > 0)
{
var _appendtxt = Files.FirstOrDefault(ap => (culture.CompareInfo.IndexOf(ap, source.Text, CompareOptions.IgnoreCase) == 0));
_appendtxt = _appendtxt.Remove(0, change.Offset + 1);
source.Text += _appendtxt;
source.SelectionStart = change.Offset + 1;
source.SelectionLength = source.Text.Length;
}
}
InProg = false;
}
}
Ensuite, faire un simple gestionnaire PreviewKeyDown
:
private static bool DelKeyPressed;
internal static void DelPressed(object sender, KeyEventArgs e)
{ if (e.Key == Key.Back) { DelKeyPressed = true; } else { DelKeyPressed = false; } }
Dans cet exemple "Fichiers" est une liste de noms de répertoires créés au démarrage de l'application.
Ensuite, il suffit attach les gestionnaires:
public class YourClass
{
public YourClass()
{
YourTextbox.PreviewKeyDown += DelPressed;
YourTextbox.TextChanged += TBTextChanged;
}
}
Avec ce que vous choisissez de mettre dans le List
sera utilisé pour la zone de saisie semi-automatique. Cela peut ne pas être une bonne option si vous vous attendez à avoir une énorme liste pour la saisie semi-automatique, mais dans mon application, il ne voit que 20-50 articles, donc il passe très rapidement.
'System.Windows.Controls.AutoCompleteBox' ne fait pas partie de WPF. Vous devrez ajouter une référence à [WPF Toolkit] (http://wpf.codeplex.com/) pour utiliser ce contrôle. –
@MartinLiversage J'ai ajouté le kit d'outils wpf pour Visual Studio 2013. Mais la boîte automatique n'est pas visible dans la boîte à outils. pourquoi donc? – vigamage