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:
![](https://www.winrtitalia.com/script/images/17.jpg)
Con questa semplice impostazione otteniamo che la nostra app "App1" sia presente nell'elenco della charm di ricerca.
![](https://www.winrtitalia.com/script/images/17_2.jpg)
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
Creazione di componenti personalizzati in React.js con Tailwind CSS
Utilizzare i primary constructor di C# per inizializzare le proprietà
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Cancellare una run di un workflow di GitHub
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Estrarre dati randomici da una lista di oggetti in C#
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Disabilitare automaticamente un workflow di GitHub (parte 2)
Configurare policy CORS in Azure Container Apps
Migrare una service connection a workload identity federation in Azure DevOps