Come abbiamo già introdotto nello script 13, l'integrazione con il sistema operativo è uno dei punti di forza delle Windows Store app, alcune di esse rientrano proprio come requisiti da rispettare per la pubblicazione nello store.
Una di queste è l'utilizzo della charm di ricerca per effettuare ricerche all'interno delle applicazioni.
In WinRT questa funzionalità si esegue attraverso i contracts, nello specifico attraverso il search contract.
La prima operazione è editare il manifest dell'applicazione e dichiarare che la nostra applicazione può annoverare tra quelle suscettibili di ricerca, con Visual Studio questa operazione può essere fatta con il relativo editor visuale aggiungendo search tra le Declarations, come da immagine seguente:

Con questa semplice impostazione otteniamo che la nostra app "App1" sia presente nell'elenco della charm di ricerca.

Per intercettare il click sulla lente della casella di ricerca è possibile fare l'override del metodo OnSearchActivated esposto dalla classe App.
protected override void OnSearchActivated(SearchActivatedEventArgs args) { base.OnSearchActivated(args); var frame = Window.Current.Content as Frame; if (frame != null) frame.Navigate(typeof(SearchSamplePage), args.QueryText); }
Nel metodo recuperiamo il testo immesso dall'utente attraverso il parametro SearchActivatedEventArgs e la sua proprietà QueryText, che viene passato tra i parametri di navigazione alla view incaricata di mostrare i risultati, nell'esempio SearchSamplePage.
Tale view è responsabile di eseguire l'accesso ai dati e mostrare i risultati della ricerca.
In realtà il metodo OnSearchActivated si scatena anche quando l'applicazione viene attivata direttamente dalla charm, nel momento in cui l'utente seleziona l'applicazione nella lista, prima di immettere il testo e premere il pulsante di ricerca con la lente. Quindi, in tale metodo, possiamo adottare le dovute logiche per ridurre i tempi di startup ed evitare la navigazione se siamo già nella view di ricerca.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare i metodi Linq MinBy e MaxBy per semplificare le ricerche degli elementi minimi e massimi in liste di oggetti complessi con LINQ
Serializzare e deserializzare un tipo DateOnly con System.Text.Json
Le novità di .NET 6 e C# 10
Ottimizzare il codice JavaScript con i Shorthand Patterns - prima parte
Le novità di Angular 13 e del suo ecosistema
Velocizzare l'installazione delle dipendenze in un workflow di GitHub
Layout skeleton per Screen Reader
Log streaming di una Azure Container App
Utilizzare .NET 6 con le Azure Function
Un confronto tra Framework CSS: Foundation, Bulma, TailwindCSS e SemanticUI
Le novità di Angular 14
Commentare una issue associata ad una pull request tramite un workflow di GitHub
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Gestire form con più di un pulsante submit in ASP.NET MVC
- Usare TryUpdateModelAsync per aggiornare le entity nelle action di POST in ASP.NET Core MVC
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!