Получить индивидуальный идентификатор для каждого элемента в списке - PullRequest
0 голосов
/ 28 января 2020

У меня есть представление списка с одним элементом на данный момент.

<ContentPage.Content>
    <StackLayout>
        <ListView x:Name="MyListView"
        CachingStrategy="RecycleElement"
        SelectionMode="Single">

            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextCell Text="{Binding Text}" Detail="{Binding Detail}" Something to identify item individually ??? />

                </DataTemplate>
            </ListView.ItemTemplate>

        </ListView>

        <Button Text="Commencer" VerticalOptions="End" HorizontalOptions="Center" Clicked="StartProcessButton"/>

    </StackLayout>
</ContentPage.Content>

Я хочу получить идентификатор или имя или что-то, что может индивидуально получить этот элемент в моей viewModel.

Например, если у меня есть система идентификаторов для этого элемента:

void Action() {
  if (listView.itemSelected.id == 1) {
     then ....
  }
}

Я ищу такие вещи. Я проверил Google, но я не нашел что-то для меня.

1 Ответ

0 голосов
/ 28 января 2020

Вы можете создать свойство id.

Contact.cs

public class Contacts
   {
    private int id;
    public int Id
    {
        get { return id; }
        set { id = value; }
    }

    private string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    private string address;

    public string Address
    {
        get { return address; }
        set { address = value; }
    }

    private string image;

    public string Image
    {
        get { return image; }
        set { image = value; }
    }
}

MainPage.xaml

 <ListView
    x:Name="ContactsList"
    IsVisible="True"
    ItemsSource="{Binding MyList}" ItemSelected="ContactsList_ItemSelected">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout Orientation="Horizontal">
                    <Image
                        HeightRequest="50"
                        Source="{Binding Image}"
                        WidthRequest="50" />
                    <Label Text="{Binding Id}" />
                    <Label Text="{Binding Name}" />
                    <Label Text="{Binding Address}" />
                </StackLayout>
            </ViewCell>

        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

MainPage.xaml.cs

 public partial class MainPage : ContentPage
{
    private ObservableCollection<Contacts> myList;

    public ObservableCollection<Contacts> MyList
    {
        get { return myList; }
        set { myList = value; }
    }
    public MainPage()
    {
        InitializeComponent();
        this.BindingContext = this;

        MyList = new ObservableCollection<Contacts>();

        for (int i = 1; i < 10; i++)
        {
            MyList.Add(new Contacts() { Id = i, Name = "Student" + i.ToString(), Address = "Address" + i.ToString(), Image = "usa.png" });
        }

        ContactsList.ItemsSource = MyList;
    }


    private void ContactsList_ItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        var item = (Contacts)e.SelectedItem;
        if (item.Id == 1)
        {
            //.......do something you want
             DisplayAlert("Id", "the id of item is 1", "Cancel");
        }
    }
}

В событии ContactsList_ItemSelected вы можете получить идентификатор из e.SelectedItem. Я использую DisplayAlert, чтобы показать результат.

enter image description here

...