Kezdőoldal > 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

Advertisements
  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

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: