рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рднреАрддрд░ рдЦреЛрдЬреЗрдВ рд╡рд┐рдВрдбреЛрдЬ 8 рдХреА рдирдИ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЦреЛрдЬ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рди рдХреЗрд╡рд▓ рдлрд╛рдЗрд▓реЛрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдЖрдкрдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЕрдВрджрд░ рднреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рдпрд╣ рд▓реЗрдЦ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИ:
1. рдореЗрдЯреНрд░реЛ рдЖрд╡реЗрджрди рдореЗрдВ рдЦреЛрдЬ рдХрд╛ рдПрдХреАрдХрд░рдг
2. рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рдВрдХреЗрдд (рд╕реБрдЭрд╛рд╡)ред
3. рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реА рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ред
4. рдЦреЛрдЬ рдЕрдиреБрдмрдВрдз (рд╕рд╛рдорд╛рдиреНрдп рдПрдХреАрдХрд░рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ) рдХрд╛ рд▓рд╛рдкрд░рд╡рд╛рд╣ рдЙрдкрдпреЛрдЧред
1. рдореЗрдЯреНрд░реЛ рдЖрд╡реЗрджрди рдореЗрдВ рдЦреЛрдЬ рдХрд╛ рдПрдХреАрдХрд░рдгрдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЦреЛрдЬ рдЕрдиреБрдмрдВрдз рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рдЦреЛрдЬ рдХреИрд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЦреЛрдЬ рдЕрдиреБрдмрдВрдз рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рддреИрдпрд╛рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:

VS2012 рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд SearchContract рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИ рдЬреЛ рдкреНрд░рдХрдЯ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), app.xaml.cs (рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ OnSearchActivated рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реБрдП) рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдиреНрдпреВрдирддрдо рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЦреЛрдЬ рдХреНрд╡реЗрд░реА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкреГрд╖реНрда рдЬреЛрдбрд╝рддрд╛ рд╣реИред ред
рд╣рдо рдЗрд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рдЪрд░рдг рджрд░ рдЪрд░рдг рдПрдХ рдЦреЛрдЬ рдЕрдиреБрдмрдВрдз рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ (Package.appxmanifest рдлрд╝рд╛рдЗрд▓) рдореЗрдВ рд╣рдореЗрдВ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЦреЛрдЬ рдЕрдиреБрдмрдВрдз рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрдЯрди рдХреЛ рдЦреЛрд▓реЗрдВ рдФрд░ "рдЕрдиреБрдмрдВрдз" рдЯреИрдм рдореЗрдВ рдЦреЛрдЬ рдЕрдиреБрдмрдВрдз рдЬреЛрдбрд╝реЗрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд▓рд╛рд╕ "app.xaml.cs" рдореЗрдВ, рд╣рдо рдЦреЛрдЬ рдЕрдиреБрдмрдВрдз рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдХреНрд░рд┐рдпрдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЦреЛрдЬ рдЕрдиреБрдмрдВрдз рдХреЗ рддрд╣рдд рд╕рдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдкрд░ рд╣рдо рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрд▓рдЧ рдкреГрд╖реНрда (SearchPage.xaml) рдЦреЛрд▓реЗрдВред
protected override void OnSearchActivated(SearchActivatedEventArgs args) { var frame = Window.Current.Content as Frame; if(frame==null) { frame=new Frame(); Window.Current.Content = frame; } frame.Navigate(typeof(SearchPage), args.QueryText); Window.Current.Activate(); }
рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рд░реНрдЪрдкреЗрдЬ рдкреЗрдЬ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЦреЛрдЬ рдХреНрд╡реЗрд░реА рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ OnSearchActivated рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╡рд░реНрддрдорд╛рди рдлреНрд░реЗрдо рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдкрд░ рдлреНрд░реЗрдо рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд▓ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рд░реНрдЪрдкреЗрдЬ рдкреЗрдЬ рдкрд░, рд╣рдо рдЕрдм рджрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдЦреЛрдЬ рдХреНрд╡реЗрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
protected override void OnNavigatedTo(NavigationEventArgs e) { var query = (string)e.Parameter; SearchByQuery(query); } private void SearchByQuery(string queryText) { pageTitle.Text = "Search result for \"" + queryText + "\":";
2. рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рдВрдХреЗрдд (рд╕реБрдЭрд╛рд╡)редрдЦреЛрдЬ рдЕрдиреБрдмрдВрдз рдПрдкреАрдЖрдИ рд╣рдореЗрдВ рдЦреЛрдЬ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╕рдордп рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рдВрдХреЗрдд рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рдВрдХреЗрдд рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЪрдпрди (рд╕рдХреНрд░рд┐рдп) рдХрд░рддрд╛ рд╣реИред
1. 1. рдкрд╛рда рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИрдРрдб рд╕рдкреЛрд░реНрдЯ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдкреЗрдЬ рдбрд┐рдЬрд╛рдЗрдирд░ рдореЗрдВ рд╣рдо рд╕рдВрджрд░реНрдн рдкреНрд░реЙрдореНрдкреНрдЯ рдЕрдиреБрд░реЛрдз рдЕрдиреБрд░реЛрдз рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред
public SearchPage() { this.InitializeComponent(); SearchPane.GetForCurrentView().SuggestionsRequested += SearchPage_SuggestionsRequested; }
SearchPage_SuggestionsRequested рдкрджреНрдзрддрд┐ рдореЗрдВ рдЖрдЧреЗ рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рдВрдХреЗрдд рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
void SearchPage_SuggestionsRequested(SearchPane sender, SearchPaneSuggestionsRequestedEventArgs args) { var products=new[] { "apple", "cheese", "bread", "onion", "orange", "potato"} args.Request.SearchSuggestionCollection.AppendQuerySuggestions(products); }
рдЕрдм, рдпрджрд┐ рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдХреНрд╡реЗрд░реА рдЪрдпрди рдШрдЯрдирд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ:
SearchPane.GetForCurrentView ()ред QueryChanged + = SearchPage_QueryChanged;
рд╣рдо рд╕рдВрдХреЗрддреЛрдВ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЪрдпрди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред
void SearchPage_QueryChanged(SearchPane sender, SearchPaneQueryChangedEventArgs args) { SearchByQuery(args.QueryText); }
2.2ред рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╕реБрдЭрд╛рд╡SearchContract API рд╣рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддрд░реНрдХ (рд▓реЙрдЬрд┐рдХрд▓реЗрдпрд░) рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд░рдд рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЦреЗрддреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрддреНрдкрд╛рдж рд▓реМрдЯрд╛рддреА рд╣реИ:
public class Product { public string Name { get; set; } public string Image { get; set; } public string Description { get; set; } public string Id { get; set; } }
рдЕрдм SearchPage_SuggestionsRequested рдкрджреНрдзрддрд┐ рдореЗрдВ, рд╣рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕рдВрдХреЗрдд рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП args.Request.SearchSuggestionCollection.AppendResultSuggestion рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
void SearchPage_SuggestionsRequested(SearchPane sender, SearchPaneSuggestionsRequestedEventArgs args) { foreach (var product in LogicLayer.SearchProduct(args.QueryText)) { var image = RandomAccessStreamReference.CreateFromUri(newUri(product.Image)); args.Request.SearchSuggestionCollection.AppendResultSuggestion(product.Name, product.Description, product.Id, image, String.Empty); } }
рдпрд╣рд╛рдВ рд╣рдо рдЙрддреНрдкрд╛рдж рдЖрдИрдбреА рдХреЛ рдЯреИрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрдЯрд┐рд▓ рд╕рдВрдХреЗрддреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, рддреЛ QueryChanged рдЗрд╡реЗрдВрдЯ рдлрд╛рдпрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЬрдЯрд┐рд▓ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╣реИ
ResultSuggestionChosen рдШрдЯрдирд╛ред
рд╣рдо рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
SearchPane.GetForCurrentView (); ResultSuggestionChosen + = SearchPage_ResultSuggestionChosen;
рдЕрдм рд╣рдо рдЙрддреНрдкрд╛рдж рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
void SearchPage_ResultSuggestionChosen(SearchPane sender, SearchPaneResultSuggestionChosenEventArgs args) { var id = args.Tag; SearchById(query); }
2.3ред рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдкрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдорджрджредрдЫреЛрдЯреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддред
рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЗрдВ рдЦреЛрдЬ рдИрд╡реЗрдВрдЯ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рдЪреВрдВрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрдИ рдмрд╛рд░ рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВрдЧреЗред
App.xaml.cs рдХреЗ рд▓рд┐рдП SubscribeToSearchEvents рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ
private bool isSubscribed; public void SubscribeToSearchEvents() { if (!isSubscribed) { isSubscribed = true; SearchPane.GetForCurrentView().SuggestionsRequested += SearchPage_SuggestionsRequested; SearchPane.GetForCurrentView().ResultSuggestionChosen += SearchPage_ResultSuggestionChosen; SearchPane.GetForCurrentView().QueryChanged += SearchPage_QueryChanged; } }
рдЕрдм рдмрд╕ рдЗрд╕реЗ OnLaunched рдФрд░ OnSearchActivated рддрд░реАрдХреЛрдВ рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ
protected override void OnLaunched(LaunchActivatedEventArgs args) { SubscribeToSearchEvents(); ... }
protected override void OnSearchActivated(SearchActivatedEventArgs args) { SubscribeToSearchEvents(); }
3. рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реА рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛редрдЕрдЧрд░ рд╣рдореЗрдВ рдФрд░ рднреА рдЬрдЯрд┐рд▓ рд╕рдВрдХреЗрдд рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рд╣рдо рдХреНрд╡реЗрд░реА рдХреЛ рддреБрд░рдВрдд рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрдирдкреБрдЯ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЦреЛрдЬ рдХреНрд╡реЗрд░реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рддреБрд░рдВрдд рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЦреЛрдЬ рдХреНрд╡реЗрд░реА (рдХреНрд╡реЗрд░реАрдЪреЗрдВрдЬреНрдб) рдХреА рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрди рд╡рд┐рдзрд┐ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
SearchPane.GetForCurrentView ()ред QueryChanged + = SearchPage_QueryChanged;
рдЕрдиреНрдп рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рдорд╛рди, рд╣рдо рдЦреЛрдЬ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
void SearchPage_QueryChanged(SearchPane sender, SearchPaneQueryChangedEventArgs args) { SearchByQuery(args.QueryText); }
4. рд╣рдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЦреЛрдЬ рдПрдХреАрдХрд░рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ:рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рд╡рд┐рдВрдбреЛрдЬ 8 рдЖрд░рдкреА рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рддрдп рдХреА рдЬрд╛рдПрдВрдЧреАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдм рд▓рдЧрднрдЧ рд╕рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рдХрдИ "рд▓рдХреНрд╖рдг" рд╣реИрдВ (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреИрд╕реЗ рдХрд┐ рдкреАрдкрд▓ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ)ред
4.1ред рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рдЕрд╡рд╕рд░ рдХрд╛ рдиреБрдХрд╕рд╛рдиредрдпрджрд┐ рдЖрд╡реЗрджрди рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдЦреЛрдЬ рдЕрдиреБрдмрдВрдз рдХреЗ рддрд╣рдд рдЖрд╡реЗрджрди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЦреЛрдЬ рдкреГрд╖реНрда рдЦреБрд▓рддрд╛ рд╣реИред рдЕрдм, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореБрдЦреНрдп рдореЗрдиреВ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЦреЛрдЬ рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦреЗрдЧрд╛ рдФрд░ рд╡рд╣ рдореБрдЦреНрдп рдореЗрдиреВ рдкрд░ рдирд╣реАрдВ рдЬрд╛ рд╕рдХреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЦреЛрдЬ рдкреГрд╖реНрда рдкрд░ рдмреИрдХ рдмрдЯрди рдХреЗрд╡рд▓ рддрднреА рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдЬрдм рдЦреЛрдЬ рд╕реЗ рдкрд╣рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдХреЗрд╡рд▓ рдЖрд╡реЗрджрди рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реИредрдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдлрд╝реНрд░реЗрдо рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп рдЦреЛрдЬ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (OnSearchActivated) рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдХреНрд░рдордг рднреА рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред
protected override void OnSearchActivated(SearchActivatedEventArgs args) { var frame = Window.Current.Content as Frame; if(frame==null) { frame=new Frame(); Window.Current.Content = frame;
// frame.Navigate(typeof(MainPage)); } frame.Navigate(typeof(SearchPage), args.QueryText); Window.Current.Activate(); }
4.2ред рдПрдХрд╛рдзрд┐рдХ рдЦреЛрдЬ рдкреГрд╖реНрда рдЙрджрд╛рд╣рд░рдгрдпрджрд┐ рдЖрдк рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрдИ рдЦреЛрдЬ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдкреГрд╖реНрда рдХреА рдПрдХ рдФрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдмреИрдХ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкрд┐рдЫрд▓реЗ рдЦреЛрдЬ рдкреГрд╖реНрда рдкрд░ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдпрд╣ рдмрдЧ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЦреЛрдЬ рдХреА рдШрдЯрдирд╛ рдкреНрд░рддреНрдпреЗрдХ рдмрдирд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдЧрдВрднреАрд░ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВредрд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореЗрд░реА рд░рд╛рдп рдПрдХ рдмрдЧ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рдлреА рдмрд╛рд░ рдореИрдВ рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдмрд╛рд░ рдмреИрдХ рдмрдЯрди рджрдмрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдирд╛рд░рд╛рдЬ рдерд╛ред
рдПрдХ рд╕рдорд╛рдзрд╛рди рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдЦреЛрдЬ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╕рдордп, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдПрдХ рдЦреЛрдЬ рдкреГрд╖реНрда рд╣реИ рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ:
protected override void OnSearchActivated(SearchActivatedEventArgs args) { RemoveSearchPage(); var frame = Window.Current.Content as Frame; if(frame==null) { frame=new Frame(); Window.Current.Content = frame; frame.Navigate(typeof(MainPage)); } frame.Navigate(typeof(SearchPage), args.QueryText); Window.Current.Activate(); }
рддрджрдиреБрд╕рд╛рд░, RemoveSearchPage рдкрджреНрдзрддрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
private void RemoveSearchPage() { var frame = Window.Current.Content as Frame; if (frame== null) { return; } var page=frame.Content as Page; if (page == null) { return; } if (page.GetType()==typeof(SearchPage)) { frame.GoBack(); } }
рд╕реНрд░реЛрдд рдХреЛрдб (288.51 рдХреЗрдмреА)рдкреБрдирд╢реНрдЪ рд▓реЗрдЦ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдореВрд▓реНрдп рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдмреНрдмрд░ рд╕реНрдЯрд╛рд╕
рдкрд╛рд╡рд▓реЛрд╡ рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред