So che questa è una domanda molto vecchia ma voglio aggiungere una risposta che ho trovato.
In primo luogo è necessario un gestore per il vostro normale gestore TextChanged
evento per il 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;
}
}
poi fare una semplice PreviewKeyDown
gestore:
private static bool DelKeyPressed;
internal static void DelPressed(object sender, KeyEventArgs e)
{ if (e.Key == Key.Back) { DelKeyPressed = true; } else { DelKeyPressed = false; } }
In questo esempio "File" è un elenco di nomi di directory creati all'avvio dell'applicazione.
Poi basta allegare i gestori:
public class YourClass
{
public YourClass()
{
YourTextbox.PreviewKeyDown += DelPressed;
YourTextbox.TextChanged += TBTextChanged;
}
}
Con questo ciò che si sceglie di mettere in List
sarà utilizzato per la casella di completamento automatico. Questo potrebbe non essere una buona opzione se ti aspetti di avere una lista enorme per il completamento automatico, ma nella mia app vede sempre solo 20-50 articoli, quindi scorre molto velocemente.
'System.Windows.Controls.AutoCompleteBox' non fa parte di WPF. Dovrai aggiungere un riferimento al [WPF Toolkit] (http://wpf.codeplex.com/) per usare quel controllo. –
@MartinLiversage Ho aggiunto il kit di strumenti wpf per visual studio 2013. Tuttavia, la casella di completamento automatico non è visibile nella cassetta degli attrezzi. perché? – vigamage