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:
ListdaysOfWeek = 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; }