WPF, Silverlight, Windows Phone 8 und Windows Store Apps

Windows Phone 8.1: Autovervollständigung mit der AutoSuggestBox
Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und Fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „Windows Phone 8.1: Autovervollständigung mit der AutoSuggestBox’“. Viel Spaß mit XAML Expertise.

Windows Phone 8.1 ist da und die Neuheiten möchten natürlich gleich ausprobiert werden. Um sie allerdings in der Entwicklung nutzen zu können, wird zuerst einmal Visual Studio 2013 benötigt. Genauer gesagt: Visual Studio 2013 inklusive Update 2 RC, dessen Bestandteil unter anderem die Windows Phone 8.1 Development Tools sind [1]. Verwendet man das Tool ReSharper, sollte man darauf achten, dass es ebenfalls auf dem neuesten Stand ist, da es sonst zu Problemen kommen kann.

Autosuggestbox unter Windows Phone 8.1

Ein neues Steuerelement, das Windows Phone 8.1 mitliefert, ist die AutoSuggestBox. Wie der Name schon sagt, dient es zur Autovervollständigung mit nur wenigen Zeilen Code. Hierzu wird der Oberfläche ganz einfach eine AutoSuggestBox hinzugefügt:


Im nächsten Schritt wird in der MainPage.xaml.cs eine Liste angelegt, die definiert, welche Begriffe die AutoSuggestBox vervollständigen soll. In diesem Fall wären das die Wochentage:

List daysOfWeek = Enum.GetNames(typeof(Windows.Globalization.DayOfWeek)).ToList();

Es ist natürlich auch möglich, eigens angelegte Listen oder Textdateien zu hinterlegen.

Im Anschluss wird das TextChanged-Event der AutoSuggestBox abonniert und der Event-Methode wird der Code aus Listing 1 hinzugefügt. Hier passiert nichts anderes als eine Überprüfung des Eingabewerts des Benutzers. Hat er eine Eingabe gemacht, wird überprüft, ob ein Wert dazu vorhanden ist. Ist dies der Fall, wird der entsprechende Begriff angezeigt (Abb. 1). Wenn nicht, soll automatisch der Text: „Keine Ergebnisse gefunden“ angezeigt werden (Abb. 2). Die Anwendung kann nun gestartet werden.

void AutoSuggestBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
{
  string userInput = AutoSuggestBox.Text.Trim();
  if (args.Reason == AutoSuggestionBoxTextChangeReason.SuggestionChosen)
  {
    return;
  }
  if (userInput.Length == 0)
  {
    AutoSuggestBox.ItemsSource = null;
    return;
  }
  IOrderedEnumerable dayResult = from dayOfWeek in daysOfWeek
  where dayOfWeek.ToUpper().Contains(userInput.ToUpper())
  orderby dayOfWeek ascending
  select dayOfWeek;

  if (!dayResult.Any())
  {
    List noResults = new List();
    noResults.Add("Keine Ergebnisse gefunden");
    AutoSuggestBox.ItemsSource = noResults;
    return;
  }
  AutoSuggestBox.ItemsSource = dayResult;
}

Abb. 1: AutoSuggestBox mit gefundenem Begriff

Abb. 2: AutoSuggestBox ohne Ergebnis

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -