Kezdőlap > Windows 8 > Keresési lehetőségek felajánlása

Keresési lehetőségek felajánlása

2013. január 2. szerda Hozzászólás Go to comments

Sok esetben nem elég csak annyi, hogy lekérdezzük, hogy a felhasználó mit adott meg. Legtöbbször segítenünk kell a keresést, és ajánlatokat kell tennünk. Ehhez a Windows.ApplicationModel.Search névtér lesz majd a segítségünkre. Természetesen itt el kell végeznünk azokat az előkészületeket, amiket a Keresés – Search Contract –ben leírtunk.

using Windows.ApplicationModel.Search;

Ezt követően létrehozunk egy SearchPane példányt a SearchPane GetForCurrentView() metódus segítségével (Lásd: konstruktor). Majd feliratkozunk a SuggestionsRequested eseményre.

A SuggestionsRequested törzsében a SearchPaneSuggestionsRequestedEventArgs segítségével lekérdezhetjük azt a keresési kifejezést, amit a felhasználó jelenleg megadott (args.QueryText). Az args.Request egy SearchPaneSuggestionsRequest példányt ad vissza. Ezt követően indul a keresés. Ez most egyszerű eset, hisz csak végiglépünk egy tömb elemein; ha az egyik szó eleje megegyezik a keresési mezőben megadottal, akkor az eredményt hozzáfűzzük a SearchPaneSuggestionsRequest SearchSuggestionCollection gyűjteményéhez az AppendQuerySuggestion metódusa segítségével. Célszerű vizsgálni, hogy hány lehetőséget adunk a felhasználónak. Mi most megvizsgáljuk, hogy ha már van legalább öt darab elem átadva a SearchSuggestionCollection-nek, akkor megszakítjuk a keresést. Ha a felhasználó újabb karaktert ad meg, akkor a keresés újraindul.

SearchPane searchPane;

 

private static readonly string[] cityList =

    { "Abaújszántó", "Abony", "Abádszalók", "Adony", "Ajka", "Albertirsa", "Alsózsolca", "Aszód", "Badacsonytomaj", "Baja", "Baktalórántháza",        "Balassagyarmat", "Balatonalmádi", "Balatonboglár", "Balatonföldvár", "Balatonfüred", "Balatonfűzfő", "Balatonkenese", "Balatonlelle", "Balkány" };

public MainPage()
{
    this.InitializeComponent();
    searchPane = SearchPane.GetForCurrentView();
    searchPane.SuggestionsRequested += searchPane_SuggestionsRequested;
}

void searchPane_SuggestionsRequested(SearchPane sender, SearchPaneSuggestionsRequestedEventArgs args)
{
    string queryString = args.QueryText;
    SearchPaneSuggestionsRequest request = args.Request;
    foreach (string suggestion in cityList)
    {
        if (suggestion.StartsWith(queryString, StringComparison.CurrentCultureIgnoreCase))
        {
            request.SearchSuggestionCollection.AppendQuerySuggestion(suggestion);
            if (request.SearchSuggestionCollection.Size >= 5)
            {
                break;
            }
        }
    }
}

Az eredmény pedig most így néz ki:

image

  1. Még nincs hozzászólás.
  1. 2013. január 3. csütörtök - 11:04
  2. 2013. január 3. csütörtök - 11:05

Hozzászólás