Zoeken naar tekst
Om dit uit te testen maakt u een nieuw project aan.
- Start een nieuw Xamarin-project (ik heb het de naam Zoeken gegeven).
XAML
Om tekst te zoeken kunt u gebruik maken van de Editor en de SearchBar.
- Pas de XAML van de pagina Mainpage.xaml als volgt aan:
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:Zoeken" x:Class="Zoeken.MainPage"> <StackLayout> <SearchBar x:Name="ZoekTekst" Placeholder="Zoeken naar..." SearchButtonPressed="ZoekTekst_SearchButtonPressed" ></SearchBar> <Editor x:Name="Tekst" Text="Mijn naam is Geert." VerticalOptions="FillAndExpand"></Editor> </StackLayout> </ContentPage>
Code-behind
Er is reeds een event voorzien SearchButtonPressed="ZoekTekst_SearchButtonPressed"
die uitgevoerd wordt als de gebruiker op de zoekknop drukt. De event werkt asynchroon zodat het aanroepen van de DisplayAlert andere lopende acties niet tegenhoudt.
- Pas de code behind in MainPage.xaml.cs als volgt aan.
using System; using Xamarin.Forms; namespace Zoeken { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } private async void ZoekTekst_SearchButtonPressed(object sender, EventArgs e) { if(Tekst.Text.IndexOf(ZoekTekst.Text.Trim()) > 0) { await DisplayAlert("Zoeken", "De tekst is gevonden op positie " + Tekst.Text.IndexOf(ZoekTekst.Text) + "!", "OK"); } else { await DisplayAlert("Zoeken", "De tekst is niet gevonden!", "OK"); } } } }
De conditie if(Tekst.Text.IndexOf(ZoekTekst.Text.Trim()) > 0)
vraagt wellicht wat meer duiding.
- Met
ZoekTekst.Text.Trim()
wordt de tekst uit het zoekvak opgehaald en spaties aan het begin of het einde worden weggelaten door het gebruik van Trim(). - Er wordt gecontroleerd of de te zoeken tekst voorkomt in de tekst
Tekst.Text.IndexOf(ZoekTekst.Text.Trim())
door gebruik te maken van IndexOf(). - Als de tekst voorkomt geeft IndexOf() de positie weer waar de tekst, het eerst, gevonden is (beginnen te tellen bij 0). Is de tekst niet gevonden dan geeft IndexOf() de waarde -1 terug.