Totally85
Totally85

Reputation: 21

When using a text cell, is it possible to get the value of the text when it is tapped?

The text cell is inside of a listview. I'm populating the text of the text cell with data using Binding. I need to actually get the value of the text when the text cell is clicked on. Is there a way to do this?

Upvotes: 0

Views: 1193

Answers (2)

TaiT's
TaiT's

Reputation: 3216

XAML file:

<ListView ItemsSource="{Binding MyItems}" ItemTapped="{Binding OnItemTapped}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextCell Text="{Binding Key}" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListVIew>

You bind the ItemTapped event to a custom event handler using Binding. In codebehind, e.Item will contain the tapped item, from which you can extract the Key and Value.

Codebehind:

public class MyPage : ContentPage
{
    ...
    private async void OnItemTapped(object sender, ItemTappedEventArgs e)
    {
        var tappedItem = e.Item;
        // do something with tappedItem.Value...
    }
}

Edit/Note: You will need to override the ToString() method in your model class in order to display whatever you want. You get the namespace displayed because that's the default behavior of calling ToString() on any object.

Upvotes: 1

Viktor Rasevych
Viktor Rasevych

Reputation: 1

You could subscribe to ItemTapped or ItemSelected ListView events and pull your item from ItemTappedEventArgs.Item (in case of ItemTapped event) or SelectedItemChangedEventArgs.SelectedItem (in case of ItemSelected event) . More info in official Xamarin documentation

If you using MVVM approach look at EventToCommandBehavior and Converter. Xamarin have good example here

Upvotes: 0

Related Questions