Ich entwickle eine mobile Xamarin Forms App, die eine Seite mit einem SearchBar-, einem ListView- und einem Map-Steuerelement enthält. Die Listenansicht enthält eine Liste von Adressen, die als Pins auf der Karte wiedergegeben werden.
Wenn der Benutzer die Suchleiste eingibt, wird die ListView automatisch aktualisiert (durch ViewModel-Bindung). Die ViewModel-Methode, die die Datenquelle für die Liste filtert, sieht ungefähr so aus ...
%Vor%Ich möchte die Map aktualisieren, da die ListView gefiltert ist, aber nicht bei JEDEM Tastendruck, da dies mehrmals pro Sekunde passieren könnte. Im Wesentlichen möchte ich eine "rollende Pause" in jedem FilterList-Ereignis, bevor die Map aktualisiert wird. In Pseudocode ...
%Vor%Dies ist mit der Klasse Stoppuhr möglich, die in Bibliotheken für portable Klassen verfügbar ist, aber ich vermute, dass es eine sauberere / bessere Methode gibt, dies mit Aufgaben zu erreichen.
Kann jemand einen
Hier ist was ich getan habe und es funktioniert in meinen Xamarin Form Apps.
%Vor%Ich habe diese "Such" -Eigenschaft an mein Eingabefeld gebunden. Wenn der Benutzer etwas filtert, wartet der Code für 1 Sekunde und vergleicht dann das neue Textfeld mit dem Feld, das es vor 1 Sekunde zuvor hatte. Angenommen, die Zeichenfolge ist gleich, bedeutet dies, dass der Benutzer die Eingabe des Textes gestoppt hat und der Code jetzt zum Filtern ausgelöst werden kann.
Eine weitere großartige Methode, um auf einen Klick zu klicken, ist
%Vor% async
und await
Schlüssel sind wichtig. Angenommen, Sie arbeiten an einer Multithread-Umgebung.
Tags und Links c# mvvm task-parallel-library xamarin.forms portable-class-library