Molte applicazioni per Windows Phone 7 si basano sull'interrogazione di servizi per ottenere dati da remoto a seconda delle richieste dell'utente. Tra queste, spesso viene data la possibilità all'utente di immettere del testo per effettuare una ricerca. Una funzionalità che è molto utile inserire nelle applicazioni è sicuramente il search as you type e cioè la possibilità di effettuare la ricerca mentre l'utente digita le lettere.
Per inserire questa funzionalità occorre sfruttare il DispatcherTimer, una classe che rappresenta un timer da riavviare ad ogni pressione dei tasti; quando il timer scatta si procede poi con la ricerca. In questo modo, se l'utente scrive velocemente non avviamo la ricerca, ma non appena attende un determinato tempo (mezzo secondo o un secondo), si avvia automatiacmente la ricerca.
Per fare questo occorre prima di tutto definire il timer nel costruttore della pagina.
private DispatcherTimer typeTimer; public MainPage() { typeTimer = new DispatcherTimer(); typeTimer.Interval = TimeSpan.FromSeconds(0.5); typeTimer.Tick += typeTimer_Tick; }
Nel relativo evento Tick non si fa altro che interrompere il timer, poiché viene continuamente ripetuto, e avviare l'interrogazione remota.
private void typeTimer_Tick(object sender, EventArgs e) { typeTimer.Stop(); DoSearch(); }
A questo punto occorre intercettare l'evento TextChanged sulla casella di testo da monitorare e avviare il timer.
private void ReadWriteTB_TextChanged(object sender, RoutedEventArgs e) { typeTimer.Stop(); typeTimer.Start(); }
Nell'evento si chiama Stop e Start per posticipare il tempo ogni volta che l'utente digita. E' possibile inoltre migliorare il codice annullando anche l'eventuale ricerca in corso chiamando l'Abort della classe WebRequest o il CancelAsync della classe WebClient.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
Evitare il flickering dei componenti nel prerender di Blazor 8
Effettuare il binding di date in Blazor
Utilizzare Tailwind CSS all'interno di React: primi componenti
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Usare le collection expression per inizializzare una lista di oggetti in C#
Cambiare la chiave di partizionamento di Azure Cosmos DB
Creare moduli CSS in React
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Disabilitare automaticamente un workflow di GitHub (parte 2)
Utilizzare un service principal per accedere a Azure Container Registry
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Disabilitare automaticamente un workflow di GitHub (parte 2)
- Ottimizzazione dei block template in Angular 17
- Paginare i risultati con QuickGrid in Blazor